{"openapi":"3.1.0","info":{"title":"Connect API","version":"3.0.0","description":"The Connect API lets you read and write your organization's data in Workpath, for example to sync Goals into a data warehouse, push KPI values from a BI tool, or create Initiatives from a planning system.\n\n## Workpath in a nutshell\n\nWorkpath customers use it to plan and track how their strategy gets executed. The main entities build on each other:\n\n- **Strategic Elements** are long-term themes, such as a strategic pillar or focus area.\n- **KPIs** are ongoing business metrics, such as revenue or churn, tracked as dated values.\n- **Goals** are outcomes a team, Business Unit or the organization wants to reach within a period, usually a quarter. Their **Key Results** measure whether they are reached.\n- **Initiatives** are the projects and work that move Goals and Key Results forward.\n\nThese entities align to each other: `supports` says what an entity contributes to, `supported_by` what contributes to it. They belong to a **Team**, a **Business Unit** or the whole organization, and can additionally be owned by **Users**. Goals are planned in **Cycles**. Each section of this reference starts by explaining its entity.\n\nAccounts can switch individual modules off (for example KPIs or Initiatives) and rename entities in their user interface. The API always uses the names above.\n\n## Connect API or MCP server?\n\nWorkpath also runs an MCP server for AI assistants such as Claude or ChatGPT. The two fit different jobs:\n\n- Use the **Connect API** for integrations that run on their own, such as syncing data into a data warehouse or BI tool, pushing KPI values, creating Initiatives from another system, or reacting to webhooks. It authenticates as an API client that an admin created.\n- Use the **MCP server** when a person works with Workpath through an AI assistant or agent, for example to ask about their Goals, draft Key Results or update progress from a chat. It acts as the signed-in user, with that user's permissions, and offers tools made for assistants.\n\nAdmins set up the MCP server in Workpath under **Settings → Integrations → Connections → MCP**, which also shows its URL.\n\n## Authentication\n\nAdmins (role `super_admin` in the API) create API clients in Workpath under **Settings → Integrations → API clients** (see the [step-by-step guide](https://workpath.zendesk.com/hc/en-us/articles/360023684614-Connect-API)). Each client comes with a token that has read or write access. Send it with every request:\n\n```\nAuthorization: Bearer \u003ctoken\u003e\n```\n\nA missing or invalid token returns 401. A read-only token returns 403 for anything other than `GET`.\n\n## Requests\n\nSend `Accept: application/json`, and `Content-Type: application/json` for request bodies; other formats return 406. Dates use ISO 8601 (`2026-03-31`).\n\n**Writing data:**\n- `PATCH` changes only the fields you send.\n- Compound fields such as `owners`, `labels`, `supports` and `milestones` are replaced as a whole when you send them.\n- Related entities are referenced by `id` only; other fields in the reference, such as `name`, are ignored.\n- Read-only fields, such as `progress` or `workpath_url`, return 422 with the code `read_only`.\n\n## Pagination\n\nList endpoints return 20 items per page, oldest first. Pages start at 1: pass `?page=2` to get the second page, and so on. The response headers tell you where you are: `Pagination-Page`, `Pagination-Page-Count` and `Pagination-Item-Count`, plus `Pagination-Next-Page` and `Link` (`rel=\"next\"`) with the URL of the next page. To fetch everything, follow `Pagination-Next-Page` until it is missing.\n\n## Errors\n\nErrors come as an `errors` array. Each error has a `code` and a `message`, and validation errors (422) also name the `attribute`. Match on `code`; the wording of messages can change.\n\n## Which data the API returns\n\nAPI clients are created by admins, and Strategic Elements, KPIs, Goals, Key Results, Initiatives and Notes are returned as that user can see them in Workpath. For example, the ones of a private Business Unit are only returned if that user is a member of it. On top of that, private Goals, KPIs, Initiatives and Notes are never returned, even if that user can see them, and neither are Goals of archived teams. Teams, Business Units, Users and Cycles are returned in full, as admins see all of them.\n\nBusiness Unit fields are empty (`null` or `[]`) when the account does not use Business Units.\n\n## Migrating from v2\n\nConnect API v2 is frozen: it gets no new features, and all new work goes into v3. IDs differ between the two versions: v2 responses for Goals and Key Results include a `v3_id`, so you can map IDs you stored from v2 before switching.\n","contact":{"name":"Workpath Support","email":"support@workpath.com","url":"https://workpath.zendesk.com/hc/en-us/articles/360023684614-Connect-API"},"termsOfService":"https://connect.workpath.com/api/docs/terms"},"servers":[{"url":"https://connect.workpath.com/api/v3","description":"Production"}],"tags":[{"name":"StrategicElement","x-displayName":"Strategic Elements","description":"A Strategic Element is a long-term strategic theme, such as a strategic pillar, priority or focus area, of the organization, a Business Unit or a team. Strategic Elements have no progress or Key Results of their own; they give the Goals, KPIs and Initiatives aligned to them a shared direction. Accounts define their own categories for them (`category`).\n\n**Ownership:** a Strategic Element belongs to the organization, to one or more Business Units, or to one or more teams; its owning users are the people who lead it.\n"},{"name":"KPI","x-displayName":"KPIs","description":"A KPI (Key Performance Indicator) is an ongoing business metric of an organization, Business Unit or team, such as revenue, churn or active users. Unlike Goals, which are time-bound, KPIs are tracked continuously as dated values: actuals (what happened), targets (what should happen) and forecasts (what is expected). Customers align Goals to the KPIs they are meant to move.\n\n**Actuals, targets and forecasts:** a KPI's history is a series of dated values of three kinds.\n- *Actuals* are measured values, for example the revenue of a month. Each actual can carry a status (such as On Track, At Risk or Off Track; the statuses are defined per account) and a short summary explaining it.\n- *Targets* are the values the KPI should reach by a date, for example a quarterly revenue target. Together with `target_type` they tell whether the KPI is on course.\n- *Forecasts* are the values the KPI is expected to have at a future date, for example a projection for the end of the year.\n\nValues are keyed by date: sending a value for a date that already has one replaces it, so an integration can resend the same period safely. `current_actual`, `current_target` and `current_forecast` give the latest actual and the target and forecast that apply now; `GET /kpis/{id}/values` returns the full series.\n\n**Syncing KPIs from your data:** KPIs are created in Workpath; the API fills in their values. A typical integration looks up each KPI's ID once, with `GET /kpis` or from the Workpath URL (teams see it when they open a KPI, e.g. `?selectedKpiId=29`), stores it, and then pushes new values on a schedule from a data warehouse or BI tool with `POST /kpis/{id}/values`.\n"},{"name":"Goal","x-displayName":"Goals","description":"A Goal describes an outcome that a team, a Business Unit or the whole organization wants to achieve within a time period, typically a quarter. Its Key Results measure whether it is achieved. Goals are the core of how Workpath customers plan and track the execution of their strategy with OKRs (Objectives and Key Results).\n\n**Naming:** Workpath accounts can rename Goals in their user interface, for example to *Objectives* or *Outcomes*. The API always uses `goal`, so if the people you integrate for talk about Objectives or Outcomes, they mean Goals.\n\n**Progress and confidence:** `progress` and `confidence_level` are calculated by Workpath and cannot be set through the API. Progress rolls up from the Goal's Key Results, from the Goals supporting it, or from both, depending on how the Goal is set up.\n\n**Ownership:** every Goal has exactly one owning user, plus the team, Business Unit or organization it belongs to.\n"},{"name":"KeyResult","x-displayName":"Key Results","description":"A Key Result is a measurable result that shows whether its Goal is achieved, for example \"Customer satisfaction rises from 7.2 to 8.5\". Every Key Result belongs to exactly one Goal; Goals typically have two to five. Teams update their Key Results regularly, usually in their recurring Conversations (team meetings in Workpath). Each *status update* records the new current value, or ticks off milestones, together with the team's confidence of reaching the target.\n\n**Progress:** for `numeric`, `percental` and `monetary` Key Results, progress is `(current_value - start_value) / (target_value - start_value)`, so it exceeds 1 when the target is overachieved and can drop below 0. For `milestone` Key Results, `target_value` counts all milestones and `current_value` the ones done, so progress is the share of milestones that are done.\n\n**Automated Key Results:** some Key Results take their current value from other Key Results (as their sum or average), from Power BI or from Excel instead of manual updates. They list their source Key Results under `supported_by.key_results`.\n\n**Ownership:** a Key Result is owned by one user or one team, or has no owner.\n"},{"name":"Initiative","x-displayName":"Initiatives","description":"An Initiative is a project or piece of work that moves Goals and Key Results forward, for example \"Roll out OKR training program to all teams\". Goals and Key Results describe the outcome a team wants; Initiatives describe the work it plans to do to get there. Accounts can rename Initiatives in their user interface, for example to *Projects* or *Measures*.\n\n**Ownership:** every Initiative belongs to one team, Business Unit or organization, and may additionally have one owning user.\n"},{"name":"Note","x-displayName":"Notes","description":"A Note is a short annotation attached to a Goal, Key Result, Initiative, or KPI.\n\nNotes capture impediments, risks, learnings, achievements, decisions, questions, or\ngeneral comments, and may carry a thread of comments.\n"},{"name":"BusinessUnit","x-displayName":"Business Units","description":"A Business Unit is a part of the customer's organization, such as a division or a region. Teams belong to a Business Unit, and each Business Unit switches optional modules (KPIs, Strategic Elements, Initiatives) on or off.\n\nArchived Business Units are not returned.\n"},{"name":"Team","x-displayName":"Teams","description":"A Team is a group of people in the customer's organization, such as a department or an operational team. Teams form a hierarchy and own Goals, Key Results, Initiatives, KPIs and Strategic Elements.\n\nArchived teams are not returned.\n"},{"name":"User","x-displayName":"Users","description":"A User represents a person with access to the Workpath platform.\n\nEach user has exactly one license determining their access level, and may have zero or more roles granting additional permissions.\n\nDeactivated users (with a non-null `deactivated_at`) are still returned by the API. Only deleted users are excluded.\n"},{"name":"Cycle","x-displayName":"Cycles","description":"A Cycle is a planning period, usually a quarter or half-year such as \"Q1 2026\". Goals are planned and reviewed per cycle: a Goal belongs to every cycle its dates overlap.\n"},{"name":"Webhooks","x-displayName":"Webhooks","description":"Webhooks push changes to Goals, Key Results and Initiatives to you as they happen, so you don't have to poll the API. They are a good fit for keeping an external dataset, such as a data warehouse, BI tool or custom dashboard, in sync with Workpath.\n\nYou register an HTTPS endpoint and choose which event types to subscribe to. When a matching event happens, Workpath POSTs a signed JSON payload to your endpoint.\n\n## Managing subscriptions\n\nWebhooks are enabled per account; ask your Workpath contact if you don't see them. Once enabled, admins manage subscriptions in Workpath under **Settings → Integrations → Webhooks**. Each subscription has:\n\n- a **destination URL** (HTTPS only),\n- the **event types** it subscribes to,\n- an **active** flag to pause delivery without deleting the subscription.\n\n## Events\n\nEach event below says when it is sent.\n\nChanges to relations, such as owners, labels or alignments, don't send an event. Use the API to fetch the full state when you need it.\n\nSecret Goals and their Key Results are never sent.\n\nDeleting a Goal also deletes its Key Results, so every `goal.deleted` comes with a `key_result.deleted` for each of its Key Results.\n\n## Payload\n\nEvery delivery uses the same envelope. The entity's own attributes are under `data`; `*.deleted` events carry only `{ \"id\": ... }`. To get related entities, look them up by `id` in the API. Each event below shows its exact payload.\n\n```json\n{\n  \"schema_version\": 1,\n  \"account_subdomain\": \"acme\",\n  \"event\": \"goal.updated\",\n  \"event_id\": 42,\n  \"created_at\": \"2026-04-30T09:17:32Z\",\n  \"data\": {}\n}\n```\n\n| Field | Description |\n| --- | --- |\n| `schema_version` | Increases only on breaking changes (a field removed, renamed or changing type). New fields don't change it, so ignore fields you don't know. |\n| `account_subdomain` | Your Workpath subdomain, e.g. `acme` for `acme.workpath.com`. Useful if your organization has several Workpath accounts. |\n| `event` | The event type. |\n| `event_id` | A counter per subscription, starting at 1. A retried delivery carries the same `event_id`, so use it to skip duplicates. |\n| `created_at` | When the event happened in Workpath (ISO 8601, UTC). |\n| `data` | The entity's attributes. |\n\n## Verifying signatures\n\nEvery request carries these headers:\n\n| Header | Description |\n| --- | --- |\n| `X-Workpath-Event` | The event type (same as `event` in the body). |\n| `X-Workpath-Signature` | Base64-encoded Ed25519 signature of the exact request body. |\n| `X-Workpath-Key-ID` | The ID of the key that signed the request. |\n\nWorkpath publishes its public keys at an unauthenticated endpoint:\n\n```\nGET https://connect.workpath.com/.well-known/webhooks/public-key\n```\n\n```json\n{\n  \"keys\": [\n    {\n      \"key_id\": \"2026-v1\",\n      \"public_key\": \"\u003cbase64-encoded Ed25519 public key\u003e\",\n      \"algorithm\": \"Ed25519\"\n    }\n  ]\n}\n```\n\nYou can cache the response for up to an hour (`Cache-Control: max-age=3600`).\n\n**Dedicated hosting:** each Workpath deployment signs with its own key. If your organization runs on a dedicated instance, fetch the keys from its own Connect host, for example `https://connect.eu2.workpath.com/.well-known/webhooks/public-key`. Keys from `connect.workpath.com` won't match your deliveries. If you're not sure which host is yours, contact support@workpath.com.\n\nTo verify a delivery:\n\n1. Read the raw request body. Don't parse the JSON first: the signature covers the exact bytes Workpath sent.\n2. Take the public key whose `key_id` matches `X-Workpath-Key-ID`.\n3. Verify the signature in `X-Workpath-Signature` against the raw body.\n4. Skip the delivery if you've already processed its `event_id`.\n\n**Key rotation:** currently one key is published. When we rotate it, the endpoint will list the old and the new key side by side for a while before the old one is removed. If you always pick the key by `X-Workpath-Key-ID` and refresh your cache at least hourly, rotation needs nothing from you.\n\n### Example: a listener in Python\n\nThis listener is handy for local testing. It fetches the keys, verifies each delivery and prints it. Its one dependency (`cryptography`) is declared inline ([PEP 723](https://peps.python.org/pep-0723/)), so `uv run webhook_listener.py` installs and starts it. Expose it with a tunnel such as ngrok and point a subscription at the public URL.\n\n```python\n#!/usr/bin/env python3\n# /// script\n# requires-python = \"\u003e=3.9\"\n# dependencies = [\"cryptography\"]\n# ///\n\"\"\"Receive Workpath webhooks, verify the Ed25519 signature, and print each event.\n\n    uv run webhook_listener.py        # listens on :8000, Ctrl+C to quit\n\"\"\"\nimport base64\nimport json\nimport urllib.request\nfrom http.server import BaseHTTPRequestHandler, ThreadingHTTPServer\n\nfrom cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey\nfrom cryptography.exceptions import InvalidSignature\n\nWELL_KNOWN = \"https://connect.workpath.com/.well-known/webhooks/public-key\"\nPORT = 8000\n\n\ndef load_keys():\n    \"\"\"Fetch the signing public keys, indexed by key_id. Refresh hourly in real use.\"\"\"\n    with urllib.request.urlopen(WELL_KNOWN, timeout=10) as resp:\n        payload = json.load(resp)\n    return {\n        key[\"key_id\"]: Ed25519PublicKey.from_public_bytes(base64.b64decode(key[\"public_key\"]))\n        for key in payload[\"keys\"]\n    }\n\n\nKEYS = load_keys()\n\n\nclass Handler(BaseHTTPRequestHandler):\n    def do_POST(self):\n        body = self.rfile.read(int(self.headers.get(\"Content-Length\", 0)))\n        key_id = self.headers.get(\"X-Workpath-Key-ID\", \"\")\n        signature = self.headers.get(\"X-Workpath-Signature\", \"\")\n\n        verified = False\n        key = KEYS.get(key_id)\n        if key and signature:\n            try:\n                key.verify(base64.b64decode(signature), body)  # verify the RAW bytes\n                verified = True\n            except InvalidSignature:\n                verified = False\n\n        event = self.headers.get(\"X-Workpath-Event\", \"?\")\n        print(f\"\\n=== {event}  (signature {'OK' if verified else 'INVALID'}, key_id={key_id!r}) ===\")\n        print(body.decode(\"utf-8\", \"replace\"))\n\n        # Acknowledge with 2xx so Workpath doesn't retry. Reject unverified deliveries.\n        self.send_response(200 if verified else 400)\n        self.end_headers()\n\n\nif __name__ == \"__main__\":\n    print(f\"Listening on http://0.0.0.0:{PORT}  ({len(KEYS)} signing key(s) loaded). Ctrl+C to quit.\")\n    try:\n        ThreadingHTTPServer((\"0.0.0.0\", PORT), Handler).serve_forever()\n    except KeyboardInterrupt:\n        print(\"\\nBye.\")\n```\n\n## Delivery\n\n- **Acknowledge with any 2xx.** Anything else counts as a failure: a non-2xx status, a redirect (redirects aren't followed), a connection error, or no response within 10 seconds.\n- **Retries:** a failed delivery is retried up to 5 times with increasing delays, within about 10 minutes. After that it is dropped; the subscription stays active.\n- **Order:** deliveries can arrive out of order. Use `created_at` for when something happened and `event_id` to skip duplicates.\n\n## Versioning\n\n- **New fields** in the envelope or in `data` can appear at any time and don't change `schema_version`. Ignore fields you don't know.\n- **Breaking changes** (a field removed, renamed or changing type) increase `schema_version`. We'll announce them in advance.\n"}],"x-tagGroups":[{"name":"Strategy \u0026 Execution","tags":["StrategicElement","KPI","Goal","KeyResult","Initiative","Note"]},{"name":"Organization","tags":["BusinessUnit","Team","User","Cycle"]},{"name":"Webhooks","tags":["Webhooks"]}],"paths":{"/kpis":{"get":{"summary":"List KPIs","tags":["KPI"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KPI"}},"examples":{"Example 1":{"value":[{"id":10,"title":"Product Users: Quarterly Active Users Growth Rate.","description":"Users that were online within the last 90 days, year over year.","kind":"team","target_type":"above","external_id":"KPI-QAU-001","decimal_places":2,"created_at":"2025-06-15T10:30:00Z","updated_at":"2026-03-02T09:15:00Z","workpath_url":"https://acme.workpath.com/goals/overview/teams/23?selectedKpiId=10#kpis","type":{"name":"percental"},"team":{"id":23,"name":"Product Growth"},"owners":{"teams":[{"id":23,"name":"Product Growth"}]},"current_actual":{"value":15.12,"date":"2026-03-01","status":"On Track","summary":"All looking good so far.","status_color":"success"},"current_target":{"value":40,"date":"2026-06-30"},"current_forecast":{"value":42.43,"date":"2026-06-30"},"supports":{"kpis":[{"id":8,"title":"Annual Recurring Revenue (ARR)"}]},"supported_by":{"goals":[{"id":55,"title":"Grow our user base by 50% this year"}],"initiatives":[{"id":12,"title":"Launch referral program for existing users"}]}}]}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/UnauthorizedError"},"examples":{}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/ForbiddenError"},"examples":{}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/NotFoundError"},"examples":{}}}},"406":{"description":"Not Acceptable","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/NotAcceptableError"},"examples":{}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/UnprocessableEntityError"},"examples":{}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/InternalServerError"}}}},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"List-KPI","description":"This endpoint retrieves the active KPIs visible to the API client, ordered by creation date (oldest first) and limited to 20 items per page.","parameters":[{"schema":{"type":"integer","example":3},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."}]}},"/kpis/{id}":{"parameters":[{"schema":{"type":"integer","example":10},"name":"id","in":"path","required":true,"description":"Unique identifier for the KPI"}],"get":{"summary":"Get a KPI","tags":["KPI"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/KPI"},"examples":{"Example 1":{"value":{"id":10,"title":"Product Users: Quarterly Active Users Growth Rate.","description":"Users that were online within the last 90 days, year over year.","kind":"team","target_type":"above","external_id":"KPI-QAU-001","decimal_places":2,"created_at":"2025-06-15T10:30:00Z","updated_at":"2026-03-02T09:15:00Z","workpath_url":"https://acme.workpath.com/goals/overview/teams/23?selectedKpiId=10#kpis","type":{"name":"percental"},"team":{"id":23,"name":"Product Growth"},"owners":{"teams":[{"id":23,"name":"Product Growth"}]},"current_actual":{"value":15.12,"date":"2026-03-01","status":"On Track","summary":"All looking good so far.","status_color":"success"},"current_target":{"value":40,"date":"2026-06-30"},"current_forecast":{"value":42.43,"date":"2026-06-30"},"supports":{"kpis":[{"id":8,"title":"Annual Recurring Revenue (ARR)"}]},"supported_by":{"goals":[{"id":55,"title":"Grow our user base by 50% this year"}],"initiatives":[{"id":12,"title":"Launch referral program for existing users"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"GET-KPI-by-id","description":"This endpoint retrieves a specific KPI identified by its ID.\n\nFor convenience, some currently relevant values are included in the responses:\n- The `current_actual` is the actual value with the most recent date in the past.\n- The `current_target` and `current_forecast` are the target and forecast with the nearest date in the future.\nThis allows building simple dashboards. For any more advanced visualization needs, query the KPI's `values` and work with the raw time series.\n\nSome properties of the API response depend on the type of KPI:\n- For `monetary` `type` KPIs, the `currency` field will be included.\n- For `percental` and `numeric` `type` KPIs, the `currency` field is omitted.\n- If `kpi.kind` is `team` then `team` information will be included in the response.\n- If `kpi.kind` is `business_unit` then `business_unit` information will be included in the response.","parameters":[{"schema":{"type":"string"},"in":"header","name":"Content-Type","description":"application/json","required":true}]}},"/kpis/{id}/values":{"get":{"summary":"List Values of a KPI","tags":["KPI"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/KpiValues"},"examples":{"Example 1":{"value":{"actuals":[{"value":15,"date":"2024-09-01","status":"string","summary":"string","status_color":"success"}],"targets":[{"value":40,"date":"2024-11-20"}],"forecasts":[{"date":"2019-08-24","value":100}]}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-kpis-id-values","description":"This endpoint retrieves a list of all values of a KPI.","parameters":[{"schema":{"type":"string"},"in":"header","name":"Content-Type","description":"application/json","required":true}]},"parameters":[{"schema":{"type":"string"},"name":"id","description":"Unique identifier for the KPI","in":"path","required":true}],"post":{"summary":"Upsert Values of a KPI","tags":["KPI"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/KpiValues"},"examples":{"Example 1":{"value":{"actuals":[{"value":15,"date":"2024-09-01","summary":"A brief description providing context about the KPI's current performance or recent changes.","status":"On Track","status_color":"success"}],"targets":[{"value":40,"date":"2024-11-20"}],"forecasts":[{"date":"2024-11-20","value":100}]}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"post-kpis-id-values","description":"The POST endpoint upserts data. Date value is treated as a key. In other words, the behavior when POSTing new values is:\n\n - If no data point with the date exists, a new one is created.\n - If there is a data point with the date, update its value (and status and summary, if given for an actual)","parameters":[{"schema":{"type":"string"},"in":"header","name":"Content-Type","description":"application/json","required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/KpiValuesCreateRequestbody"},"examples":{"Example 1":{"value":{"actuals":[{"value":1.5,"summary":"A brief description providing context about the KPI's current performance or recent changes.","status":"On Track","status_color":"success","date":"2019-08-24"}],"targets":[{"value":1.5,"date":"2019-08-24"}],"forecasts":[{"value":1.5,"date":"2019-08-24"}]}}}}}}}},"/kpis/{id}/actuals":{"parameters":[{"schema":{"type":"string"},"name":"id","description":"Unique identifier for the KPI","in":"path","required":true}],"post":{"tags":["KPI"],"summary":"Upsert Actual Values","description":"This endpoint upserts actual values. The date value is used as a key.\n- If a record is found for a the specific date then, the value is updated with the new one.\n- If no record is found for the specific date then, a new record is created.\n- If no status value is passed for a specific actual value then, the last entered status will be kept.","operationId":"post-kpis-id-actual-values","parameters":[{"name":"Content-Type","in":"header","description":"application/json","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Unique identifier for the KPI","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"","content":{"application/json":{"schema":{"type":"object","required":["actuals"],"properties":{"actuals":{"description":"Actual values to create or update, keyed by date.","type":"array","items":{"$ref":"#/components/schemas/KpiActualsCreateRequestbody"}}}},"examples":{"Example 1":{"value":{"actuals":[{"value":1.5,"summary":"A brief description providing context about the KPI's current performance or recent changes.","status":"On Track","date":"2019-08-24","status_color":"success"}]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KpiActualValue"}},"examples":{"Example 1":{"value":[{"value":15,"date":"2024-09-01","summary":"A brief description providing context about the KPI's current performance or recent changes.","status":"On Track"}]}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"security":[{"JWT":[]}],"servers":[{"url":"https://connect.workpath.com/api/v3","description":""}]}},"/kpis/{id}/forecasts":{"parameters":[{"schema":{"type":"string"},"name":"id","description":"Unique identifier for the KPI","in":"path","required":true}],"post":{"tags":["KPI"],"summary":"Upsert Forecast Values","description":"This endpoint upserts forecast values. The date value is used as a key.\n- If a record is found for a the specific date then, the value is updated with the new one.\n- If no record is found for the specific date then, a new record is created.","operationId":"post-kpis-id-forecast-values","parameters":[{"name":"Content-Type","in":"header","description":"application/json","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Unique identifier for the KPI","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"","content":{"application/json":{"schema":{"type":"object","required":["forecasts"],"properties":{"forecasts":{"description":"Forecast values to create or update, keyed by date.","type":"array","items":{"$ref":"#/components/schemas/KpiForecastsCreateRequestbody"}}}},"examples":{"Example 1":{"value":{"forecasts":[{"date":"2019-08-24","value":1.5}]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KpiForecastValue"}},"examples":{"Example 1":{"value":[{"date":"2019-08-24","value":100}]}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"security":[{"JWT":[]}],"servers":[{"url":"https://connect.workpath.com/api/v3","description":""}]}},"/kpis/{id}/targets":{"parameters":[{"schema":{"type":"string"},"name":"id","description":"Unique identifier for the KPI","in":"path","required":true}],"post":{"tags":["KPI"],"summary":"Upsert Target Values","description":"This endpoint upserts target values. The date value is used as a key.\n- If a record is found for a the specific date then, the value is updated with the new one.\n- If no record is found for the specific date then, a new record is created.","operationId":"post-kpis-id-target-values","parameters":[{"name":"Content-Type","in":"header","description":"application/json","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Unique identifier for the KPI","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"","content":{"application/json":{"schema":{"type":"object","required":["targets"],"properties":{"targets":{"description":"Target values to create or update, keyed by date.","type":"array","items":{"$ref":"#/components/schemas/KpiTargetCreateRequestbody"}}}},"examples":{"Example 1":{"value":{"targets":[{"date":"2019-08-24","value":1.5}]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KpiTargetValue"}},"examples":{"Example 1":{"value":[{"value":40,"date":"2024-11-20"}]}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"security":[{"JWT":[]}],"servers":[{"url":"https://connect.workpath.com/api/v3","description":""}]}},"/kpis/{id}/actuals/{date}":{"parameters":[{"schema":{"type":"string"},"name":"id","in":"path","required":true,"description":"Unique identifier for the KPI"},{"schema":{"type":"string"},"name":"date","in":"path","required":true,"description":"Date of the actual value"}],"delete":{"summary":"Delete an Actual Value","tags":["KPI"],"responses":{"204":{"description":"No Content"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"delete-kpis-id-actuals-date","parameters":[{"schema":{"type":"string"},"in":"header","name":"Content-Type","description":"application/json","required":true}],"description":"This endpoint will delete the actual value based on the provided date."}},"/kpis/{id}/targets/{date}":{"parameters":[{"schema":{"type":"string"},"name":"id","in":"path","required":true,"description":"Unique identifier for the KPI"},{"schema":{"type":"string"},"name":"date","in":"path","required":true,"description":"Date of the target value"}],"delete":{"summary":"Delete a Target Value","tags":["KPI"],"responses":{"204":{"description":"No Content"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"delete-kpis-id-targets-date","parameters":[{"schema":{"type":"string"},"in":"header","name":"Content-Type","description":"application/json","required":true}],"description":"This endpoint will delete the target value based on the provided date."}},"/kpis/{id}/forecasts/{date}":{"parameters":[{"schema":{"type":"string"},"name":"id","in":"path","required":true,"description":"Unique identifier for the KPI"},{"schema":{"type":"string"},"name":"date","in":"path","required":true,"description":"Date of the forecast value"}],"delete":{"summary":"Delete a Forecast Value","tags":["KPI"],"responses":{"204":{"description":"No Content"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"delete-kpis-id-forecasts-date","parameters":[{"schema":{"type":"string"},"in":"header","name":"Content-Type","description":"application/json","required":true}],"description":"This endpoint will delete the forecast value based on the provided date."}},"/goals":{"get":{"summary":"List Goals","tags":["Goal"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Goal"}},"examples":{"Example 1":{"value":[{"id":42,"title":"Successfully implement the strategic operating model across the organization","description":"Establish a consistent approach to strategy execution by rolling out OKRs company-wide, ensuring alignment from leadership priorities down to team-level goals.","draft":false,"progress":0.63,"confidence_level":8,"start_date":"2026-01-01","target_date":"2026-03-31","created_at":"2025-12-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","workpath_url":"https://acme.workpath.com/goals/42","owners":{"teams":[{"id":4,"name":"Strategy Office"}],"users":[{"id":5,"name":"Thomas Weber"}]},"collaborators":{"teams":[{"id":6,"name":"People \u0026 Culture"}],"users":[{"id":8,"name":"Elena Fischer"}]},"followers":{"users":[{"id":14,"name":"Jonas Becker"}]},"labels":[{"id":2,"title":"Strategic Initiative"}],"cycles":[{"id":9,"title":"Q1 2026"}],"key_results":[{"id":11,"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","progress":0.5,"confidence_level":9,"type":"milestone","current_value":1,"start_value":0,"target_value":2,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=11","owners":{"users":[{"id":5,"name":"Thomas Weber"}]},"milestones":[{"done":true,"title":"Strategic priorities approved by leadership team"},{"done":false,"title":"Priorities communicated to all teams via town hall"}],"supported_by":{"goals":[{"id":63,"title":"Every business unit publishes its strategic priorities"}]}},{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}},{"id":13,"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","progress":0.68,"confidence_level":7,"type":"percental","current_value":68,"start_value":0,"target_value":100,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=13","owners":{"teams":[{"id":4,"name":"Strategy Office"}]},"supported_by":{"initiatives":[{"id":9,"title":"Conduct quarterly alignment reviews across all teams"}]}},{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}],"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities and measurable outcomes"}],"kpis":[{"id":15,"title":"Time to Market for Strategic Initiatives"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"}]}},{"id":58,"title":"EMEA region achieves operational excellence in strategy execution","description":"Ensure all EMEA teams are effectively using OKRs to drive results and maintain strategic alignment with global priorities.","draft":false,"progress":0.55,"confidence_level":7,"start_date":"2026-01-01","target_date":"2026-06-30","created_at":"2025-12-20T09:00:00Z","updated_at":"2026-02-10T11:20:00Z","workpath_url":"https://acme.workpath.com/goals/58","owners":{"users":[{"id":12,"name":"Sarah Johnson"}],"business_units":[{"id":2,"name":"ACME EMEA"}]},"collaborators":{"teams":[{"id":7,"name":"EMEA Operations"}]},"followers":{},"labels":[{"id":3,"title":"Regional Priority"}],"cycles":[{"id":10,"title":"H1 2026"}],"key_results":[],"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities"}]},"supported_by":{"goals":[{"id":65,"title":"EMEA Sales teams exceed quarterly targets"}],"initiatives":[{"id":20,"title":"EMEA OKR rollout program"}]}}]}}}},"headers":{"Pagination-Page":{"$ref":"#/components/headers/Pagination-Page"},"Pagination-Limit":{"$ref":"#/components/headers/Pagination-Limit"},"Pagination-Page-Count":{"$ref":"#/components/headers/Pagination-Page-Count"},"Pagination-Item-Count":{"$ref":"#/components/headers/Pagination-Item-Count"},"Pagination-Next-Page":{"$ref":"#/components/headers/Pagination-Next-Page"},"Link":{"$ref":"#/components/headers/Pagination-Link"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-goals","description":"This endpoint retrieves a list of Workpath Goals ordered by creation date (oldest first) and limited to 20 Goals per page.\n\nOnly Goals visible to the API client are returned. Private (secret) Goals are not included.\n","parameters":[{"schema":{"type":"integer","example":3},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."},{"schema":{"type":"string","format":"date","example":"2024-01-01"},"in":"query","name":"start_date","description":"Return only Goals whose start and target dates overlap with the range `start_date` to `end_date`. Both parameters must be passed together. Default is to return all Goals."},{"schema":{"type":"string","format":"date","example":"2024-03-31"},"in":"query","name":"end_date","description":"Return only Goals whose start and target dates overlap with the range `start_date` to `end_date`. Both parameters must be passed together. Default is to return all Goals."}]},"post":{"summary":"Create a Goal","tags":["Goal"],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Goal"},"examples":{"Created Goal":{"description":"Example of a single Goal response (team Goal) showcasing all Key Result types.","summary":"Goal Example","value":{"id":42,"title":"Successfully implement the strategic operating model across the organization","description":"Establish a consistent approach to strategy execution by rolling out OKRs company-wide, ensuring alignment from leadership priorities down to team-level goals.","draft":false,"progress":0.63,"confidence_level":8,"start_date":"2026-01-01","target_date":"2026-03-31","created_at":"2025-12-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","workpath_url":"https://acme.workpath.com/goals/42","owners":{"teams":[{"id":4,"name":"Strategy Office"}],"users":[{"id":5,"name":"Thomas Weber"}]},"collaborators":{"teams":[{"id":6,"name":"People \u0026 Culture"}],"users":[{"id":8,"name":"Elena Fischer"}]},"followers":{"users":[{"id":14,"name":"Jonas Becker"}]},"labels":[{"id":2,"title":"Strategic Initiative"}],"cycles":[{"id":9,"title":"Q1 2026"}],"key_results":[{"id":11,"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","progress":0.5,"confidence_level":9,"type":"milestone","current_value":1,"start_value":0,"target_value":2,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=11","owners":{"users":[{"id":5,"name":"Thomas Weber"}]},"milestones":[{"done":true,"title":"Strategic priorities approved by leadership team"},{"done":false,"title":"Priorities communicated to all teams via town hall"}],"supported_by":{"goals":[{"id":63,"title":"Every business unit publishes its strategic priorities"}]}},{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}},{"id":13,"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","progress":0.68,"confidence_level":7,"type":"percental","current_value":68,"start_value":0,"target_value":100,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=13","owners":{"teams":[{"id":4,"name":"Strategy Office"}]},"supported_by":{"initiatives":[{"id":9,"title":"Conduct quarterly alignment reviews across all teams"}]}},{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}],"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities and measurable outcomes"}],"kpis":[{"id":15,"title":"Time to Market for Strategic Initiatives"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"create-goal","description":"Creates a new Goal.\n\n**Required fields:** `title`, `owners`, `start_date`, `target_date`\n\n**Ownership requirements:**\n- Exactly one user owner is required\n- Exactly one organizational owner (team, business_unit, or organization) is required\n\n**Atomicity:** The entire operation is atomic. If any part fails, the entire operation is rolled back.\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n- `id`: Assigned when resource is created, can't be changed\n- `progress` and `confidence_level`: Calculated from Key Results, possibly aligned Goals, not updated directly\n- `cycles`: Inferred from Goal's `start_date` and `target_date`\n- `supported_by`: Update `supports` on the entities that support this Goal instead\n- `created_at`, `updated_at`, `workpath_url`: System-managed timestamps and URLs\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalCreateRequestbody"},"examples":{"Minimal Goal":{"value":{"title":"Successfully implement the strategic operating model across the organization","start_date":"2026-01-01","target_date":"2026-03-31","owners":{"users":[{"id":5}],"teams":[{"id":4}]}}}}}}}}},"/goals/{id}":{"parameters":[{"schema":{"type":"integer","example":1},"name":"id","in":"path","required":true,"description":"Unique identifier for the Goal"}],"get":{"summary":"Get a Goal","tags":["Goal"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Goal"},"examples":{"Team Goal":{"description":"Example of a single Goal response (team Goal) showcasing all Key Result types.","summary":"Goal Example","value":{"id":42,"title":"Successfully implement the strategic operating model across the organization","description":"Establish a consistent approach to strategy execution by rolling out OKRs company-wide, ensuring alignment from leadership priorities down to team-level goals.","draft":false,"progress":0.63,"confidence_level":8,"start_date":"2026-01-01","target_date":"2026-03-31","created_at":"2025-12-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","workpath_url":"https://acme.workpath.com/goals/42","owners":{"teams":[{"id":4,"name":"Strategy Office"}],"users":[{"id":5,"name":"Thomas Weber"}]},"collaborators":{"teams":[{"id":6,"name":"People \u0026 Culture"}],"users":[{"id":8,"name":"Elena Fischer"}]},"followers":{"users":[{"id":14,"name":"Jonas Becker"}]},"labels":[{"id":2,"title":"Strategic Initiative"}],"cycles":[{"id":9,"title":"Q1 2026"}],"key_results":[{"id":11,"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","progress":0.5,"confidence_level":9,"type":"milestone","current_value":1,"start_value":0,"target_value":2,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=11","owners":{"users":[{"id":5,"name":"Thomas Weber"}]},"milestones":[{"done":true,"title":"Strategic priorities approved by leadership team"},{"done":false,"title":"Priorities communicated to all teams via town hall"}],"supported_by":{"goals":[{"id":63,"title":"Every business unit publishes its strategic priorities"}]}},{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}},{"id":13,"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","progress":0.68,"confidence_level":7,"type":"percental","current_value":68,"start_value":0,"target_value":100,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=13","owners":{"teams":[{"id":4,"name":"Strategy Office"}]},"supported_by":{"initiatives":[{"id":9,"title":"Conduct quarterly alignment reviews across all teams"}]}},{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}],"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities and measurable outcomes"}],"kpis":[{"id":15,"title":"Time to Market for Strategic Initiatives"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"}]}}},"Business Unit Goal":{"summary":"Goal Business Unit Example","description":"Example of a Business Unit Goal response.","value":{"id":58,"title":"EMEA region achieves operational excellence in strategy execution","description":"Ensure all EMEA teams are effectively using OKRs to drive results and maintain strategic alignment with global priorities.","draft":false,"progress":0.55,"confidence_level":7,"start_date":"2026-01-01","target_date":"2026-06-30","created_at":"2025-12-20T09:00:00Z","updated_at":"2026-02-10T11:20:00Z","workpath_url":"https://acme.workpath.com/goals/58","owners":{"users":[{"id":12,"name":"Sarah Johnson"}],"business_units":[{"id":2,"name":"ACME EMEA"}]},"collaborators":{"teams":[{"id":7,"name":"EMEA Operations"}]},"followers":{},"labels":[{"id":3,"title":"Regional Priority"}],"cycles":[{"id":10,"title":"H1 2026"}],"key_results":[],"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities"}]},"supported_by":{"goals":[{"id":65,"title":"EMEA Sales teams exceed quarterly targets"}],"initiatives":[{"id":20,"title":"EMEA OKR rollout program"}]}}},"Organization Goal":{"summary":"Goal Organization Example","description":"Example of an organization-level Goal response.","value":{"id":100,"title":"Become a strategy-led organization with clear priorities and measurable outcomes","description":"Transform how we set direction and execute strategy by embedding a consistent operating model across all levels of the organization.","draft":false,"progress":0.48,"confidence_level":8,"start_date":"2026-01-01","target_date":"2026-12-31","created_at":"2025-11-15T08:00:00Z","updated_at":"2026-01-25T16:30:00Z","workpath_url":"https://acme.workpath.com/goals/100","owners":{"users":[{"id":1,"name":"Dr. Michaela Chen"}],"organizations":[{"id":1,"name":"ACME Corporation"}]},"collaborators":{},"followers":{},"labels":[{"id":1,"title":"Company Priority"}],"cycles":[{"id":11,"title":"FY 2026"}],"key_results":[],"supports":{"kpis":[{"id":1,"title":"Company-wide Strategic Alignment Score"}]},"supported_by":{"goals":[{"id":42,"title":"Successfully implement the strategic operating model across the organization"},{"id":58,"title":"EMEA region achieves operational excellence in strategy execution"}],"initiatives":[{"id":25,"title":"Executive OKR leadership program"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-goal-by-id","description":"This endpoint retrieves a specific Goal identified by its ID.\n\nThe response includes:\n- Goal details including title, description, progress, and confidence level\n- Ownership information in the `owners` object\n- Collaborating users and teams in the `collaborators` object, and users and teams following the Goal in the `followers` object\n- All Key Results associated with the Goal\n- Labels and cycles the Goal belongs to\n\n**Ownership notes:**\n- All Goals have exactly one user as owner\n- Goals additionally have exactly one of: team, Business Unit, or organization as owner\n"},"patch":{"summary":"Update a Goal","tags":["Goal"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Goal"},"examples":{"Updated Goal":{"description":"Example of a single Goal response (team Goal) showcasing all Key Result types.","summary":"Goal Example","value":{"id":42,"title":"Roll out the strategic operating model to every team","description":"Establish a consistent approach to strategy execution by rolling out OKRs company-wide, ensuring alignment from leadership priorities down to team-level goals.","draft":false,"progress":0.63,"confidence_level":8,"start_date":"2026-01-01","target_date":"2026-06-30","created_at":"2025-12-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","workpath_url":"https://acme.workpath.com/goals/42","owners":{"teams":[{"id":4,"name":"Strategy Office"}],"users":[{"id":5,"name":"Thomas Weber"}]},"collaborators":{"teams":[{"id":6,"name":"People \u0026 Culture"}],"users":[{"id":8,"name":"Elena Fischer"}]},"followers":{"users":[{"id":14,"name":"Jonas Becker"}]},"labels":[{"id":2,"title":"Strategic Initiative"}],"cycles":[{"id":9,"title":"Q1 2026"}],"key_results":[{"id":11,"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","progress":0.5,"confidence_level":9,"type":"milestone","current_value":1,"start_value":0,"target_value":2,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=11","owners":{"users":[{"id":5,"name":"Thomas Weber"}]},"milestones":[{"done":true,"title":"Strategic priorities approved by leadership team"},{"done":false,"title":"Priorities communicated to all teams via town hall"}],"supported_by":{"goals":[{"id":63,"title":"Every business unit publishes its strategic priorities"}]}},{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}},{"id":13,"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","progress":0.68,"confidence_level":7,"type":"percental","current_value":68,"start_value":0,"target_value":100,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=13","owners":{"teams":[{"id":4,"name":"Strategy Office"}]},"supported_by":{"initiatives":[{"id":9,"title":"Conduct quarterly alignment reviews across all teams"}]}},{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}],"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities and measurable outcomes"}],"kpis":[{"id":15,"title":"Time to Market for Strategic Initiatives"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"update-goal","description":"Updates an existing Goal.\n\n**Partial update semantics:** For scalar fields (title, description, draft, dates),\nonly provided fields are updated. Missing fields retain their current values.\n\n**Replacement semantics for compound properties:**\n- `owners`: If provided, **replaces ALL** existing owners. Must still satisfy ownership requirements.\n- `labels`: If provided, **replaces ALL** existing labels. Use `[]` to clear labels.\n- `supports`: If provided, **replaces ALL** existing alignments.\n\n**Atomicity:** The entire operation is atomic. If any part fails, the entire operation is rolled back.\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n- `id`: Assigned when resource is created, can't be changed\n- `progress` and `confidence_level`: Calculated from Key Results, possibly aligned Goals, not updated directly\n- `cycles`: Inferred from Goal's `start_date` and `target_date`\n- `supported_by`: Update `supports` on the entities that support this Goal instead\n- `created_at`, `updated_at`, `workpath_url`: System-managed timestamps and URLs\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalUpdateRequestbody"},"examples":{"Update title and dates":{"value":{"title":"Roll out the strategic operating model to every team","target_date":"2026-06-30"}},"Replace owners":{"value":{"owners":{"users":[{"id":8}],"teams":[{"id":6}]}}}}}}}},"delete":{"summary":"Delete a Goal","tags":["Goal"],"responses":{"204":{"description":"No Content - Goal successfully deleted"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"delete-goal","description":"Deletes a Goal and all its Key Results.\n\n**Cascade behavior:**\n- All Key Results belonging to the Goal are also deleted\n- Alignment links (supports/supported_by) pointing to/from this Goal are removed\n"}},"/goals/{id}/updates":{"parameters":[{"schema":{"type":"integer","example":1},"name":"id","in":"path","required":true,"description":"Unique identifier for the Goal"}],"get":{"summary":"List Goal Updates","tags":["Goal"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"updates":{"type":"array","items":{"$ref":"#/components/schemas/GoalUpdate"}}}},"examples":{"Example":{"value":{"updates":[{"id":321,"created_at":"2026-03-15T10:30:00Z","progress":0.45,"confidence_level":7,"author":{"id":456,"name":"Jane Doe"}}]}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-goal-updates","description":"Returns the chronological history of status updates for a Goal, oldest first.\n\nEach update captures progress and confidence level as well as the author.\n\nGoal updates cannot be entered in Workpath directly; instead, these updates are computed from Key Results as well as other aligned Goals.\n\n**Ordering:** Results are returned `created_at ASC` (oldest → newest).\n\n**No pagination:** All updates are returned in a single response.\n"}},"/goals/{id}/key_results":{"parameters":[{"schema":{"type":"integer","example":1},"name":"id","in":"path","required":true,"description":"Unique identifier for the Goal"}],"get":{"summary":"List Key Results of a Goal","tags":["KeyResult"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KeyResult"}},"examples":{"Example 1":{"value":[{"id":11,"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","progress":0.5,"confidence_level":9,"type":"milestone","current_value":1,"start_value":0,"target_value":2,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=11","owners":{"users":[{"id":5,"name":"Thomas Weber"}]},"milestones":[{"done":true,"title":"Strategic priorities approved by leadership team"},{"done":false,"title":"Priorities communicated to all teams via town hall"}],"supported_by":{"goals":[{"id":63,"title":"Every business unit publishes its strategic priorities"}]}},{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}},{"id":13,"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","progress":0.68,"confidence_level":7,"type":"percental","current_value":68,"start_value":0,"target_value":100,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=13","owners":{"teams":[{"id":4,"name":"Strategy Office"}]},"supported_by":{"initiatives":[{"id":9,"title":"Conduct quarterly alignment reviews across all teams"}]}},{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}]}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-goal-key-results","description":"This endpoint retrieves all Key Results associated with a specific Goal.\n\nKey Results are ordered by position within the Goal.\n\n**Type-specific fields:**\n- `currency` is only present for Key Results of type `monetary`\n- `milestones` is only present for Key Results of type `milestone`\n\n**Ownership notes:**\n- Key Results can be owned by one user OR one team, never both\n- Key Results cannot be directly owned by Business Units or organizations, but can belong to a Business Unit- or organization-level Goal\n"},"post":{"summary":"Create a Key Result","tags":["KeyResult"],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyResult"},"examples":{"Created Key Result":{"description":"Example of a numeric Key Result.","summary":"Key Result Numeric Example","value":{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"create-key-result","description":"Creates a new Key Result for the specified Goal.\n\n**Required fields:** `title`\n\n**Defaults:**\n- `type`: percental\n- `confidence_level`: 10, unless the account sets another default\n- `start_value`: 0\n- `target_value`: 100 (for percental), 0 (for others)\n- `current_value`: equals start_value\n\n**Type-specific requirements:**\n- `monetary`: Requires `currency` field (one of `EUR`, `USD`, `GBP`, `JPY`, `RUB`, `CHF`, `NOK`, `CNY`)\n- `milestone`: Requires `milestones` array with at least one milestone\n\n**Owner inheritance:** If `owners` is not provided, the Key Result is owned by the parent Goal's owning user.\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n`id`, `progress`, `workpath_url`, `supports`, `supported_by`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyresultCreateRequestbody"},"examples":{"Monetary Key Result":{"value":{"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","type":"monetary","currency":"EUR","start_value":0,"target_value":50000,"current_value":32500,"confidence_level":7,"owners":{"teams":[{"id":6}]}}},"Percental Key Result":{"value":{"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","type":"percental","start_value":0,"target_value":100,"owners":{"teams":[{"id":4}]}}},"Milestone Key Result":{"value":{"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","type":"milestone","milestones":[{"title":"Strategic priorities approved by leadership team","done":false},{"title":"Priorities communicated to all teams via town hall","done":false}],"owners":{"users":[{"id":5}]}}}}}}}}},"/goals/{goal_id}/key_results/{key_result_id}":{"parameters":[{"schema":{"type":"integer","example":1},"name":"goal_id","in":"path","required":true,"description":"Unique identifier for the Goal"},{"schema":{"type":"integer","example":3},"name":"key_result_id","in":"path","required":true,"description":"Unique identifier for the Key Result"}],"get":{"summary":"Get a Key Result of a Goal","tags":["KeyResult"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyResult"},"examples":{"Numeric Key Result":{"description":"Example of a numeric Key Result.","summary":"Key Result Numeric Example","value":{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}}},"Percental Key Result":{"description":"Example of a percental Key Result.","summary":"Key Result Percental Example","value":{"id":13,"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","progress":0.68,"confidence_level":7,"type":"percental","current_value":68,"start_value":0,"target_value":100,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=13","owners":{"teams":[{"id":4,"name":"Strategy Office"}]},"supported_by":{"initiatives":[{"id":9,"title":"Conduct quarterly alignment reviews across all teams"}]}}},"Monetary Key Result":{"description":"Example of a monetary Key Result with currency.","summary":"Key Result Monetary Example","value":{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}},"Milestone Key Result":{"description":"Example of a milestone Key Result.","summary":"Key Result Milestone Example","value":{"id":11,"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","progress":0.5,"confidence_level":9,"type":"milestone","current_value":1,"start_value":0,"target_value":2,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=11","owners":{"users":[{"id":5,"name":"Thomas Weber"}]},"milestones":[{"done":true,"title":"Strategic priorities approved by leadership team"},{"done":false,"title":"Priorities communicated to all teams via town hall"}],"supported_by":{"goals":[{"id":63,"title":"Every business unit publishes its strategic priorities"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-goal-key-result-by-id","description":"This endpoint retrieves a specific Key Result identified by its ID within a Goal.\n\n**Type-specific fields:**\n- `currency` is only present for Key Results of type `monetary`\n- `milestones` is only present for Key Results of type `milestone`\n\n**Ownership notes:**\n- Key Results can be owned by one user OR one team, never both\n- Key Results cannot be directly owned by Business Units or organizations, but can belong to a Business Unit- or organization-level Goal\n"},"patch":{"summary":"Update a Key Result of a Goal","tags":["KeyResult"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyResult"},"examples":{"Updated Key Result":{"value":{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.84,"confidence_level":7,"type":"numeric","current_value":21,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"update-key-result","description":"Updates a Key Result's properties. All fields are optional.\n\n**Updatable fields:**\n- `confidence_level`, `current_value`, `start_value`, `target_value`\n- `title`, `description`: Update text fields\n- `milestones`: For milestone type, replaces ALL existing milestones\n- `owners`: Replaces ALL existing owners\n\n**Status Update Behavior:**\nA status update is automatically generated when the update changes the Key Result's `progress` or `confidence_level`, whether through `current_value`, `start_value`, `target_value` or `milestones`.\n\n**Type restrictions:**\n- Milestone Key Results: Use `milestones` array (not current_value/target_value)\n- The Key Result `type` cannot be changed after creation\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n`id`, `progress`, `workpath_url`, `supports`, `supported_by`, `type`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyresultFullupdateRequestbody"},"examples":{"Update confidence and value":{"value":{"confidence_level":7,"current_value":21}},"Update target only":{"value":{"target_value":30}},"Update title and description":{"value":{"title":"Teams have published their quarterly goals","description":"Track how many teams have published their Q1 goals in Workpath."}},"Update milestones":{"value":{"milestones":[{"title":"Phase 1","done":true},{"title":"Phase 2","done":false}]}}}}}}},"delete":{"summary":"Delete a Key Result of a Goal","tags":["KeyResult"],"responses":{"204":{"description":"No Content - Key Result successfully deleted"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"delete-key-result","description":"Deletes a Key Result.\n\n**Cascade behavior:**\n- Alignment links (supports/supported_by) pointing to/from this Key Result are removed\n- The parent Goal's progress is recalculated\n"}},"/key_results/{id}":{"parameters":[{"schema":{"type":"integer","example":12},"name":"id","in":"path","required":true,"description":"Unique identifier for the Key Result"}],"get":{"summary":"Get a Key Result","tags":["KeyResult"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyResult"},"examples":{"Numeric Key Result":{"description":"Example of a numeric Key Result.","summary":"Key Result Numeric Example","value":{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}}},"Percental Key Result":{"description":"Example of a percental Key Result.","summary":"Key Result Percental Example","value":{"id":13,"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","progress":0.68,"confidence_level":7,"type":"percental","current_value":68,"start_value":0,"target_value":100,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=13","owners":{"teams":[{"id":4,"name":"Strategy Office"}]},"supported_by":{"initiatives":[{"id":9,"title":"Conduct quarterly alignment reviews across all teams"}]}}},"Monetary Key Result":{"description":"Example of a monetary Key Result with currency.","summary":"Key Result Monetary Example","value":{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}},"Milestone Key Result":{"description":"Example of a milestone Key Result.","summary":"Key Result Milestone Example","value":{"id":11,"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","progress":0.5,"confidence_level":9,"type":"milestone","current_value":1,"start_value":0,"target_value":2,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=11","owners":{"users":[{"id":5,"name":"Thomas Weber"}]},"milestones":[{"done":true,"title":"Strategic priorities approved by leadership team"},{"done":false,"title":"Priorities communicated to all teams via town hall"}],"supported_by":{"goals":[{"id":63,"title":"Every business unit publishes its strategic priorities"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-key-result-by-id","description":"Convenience endpoint to retrieve a Key Result by its ID without needing the parent Goal ID.\n\nEquivalent to `GET /goals/{goal_id}/key_results/{id}` when you already know the Key Result ID.\n\n**Type-specific fields:**\n- `currency` is only present for Key Results of type `monetary`\n- `milestones` is only present for Key Results of type `milestone`\n\n**Ownership notes:**\n- Key Results can be owned by one user OR one team, never both\n- Key Results cannot be directly owned by Business Units or organizations, but can belong to a Business Unit- or organization-level Goal\n"},"patch":{"summary":"Update a Key Result","tags":["KeyResult"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyResult"},"examples":{"Updated Key Result":{"value":{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.84,"confidence_level":7,"type":"numeric","current_value":21,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"update-key-result-by-id","description":"Convenience endpoint to update a Key Result by its ID without needing the parent Goal ID.\n\nEquivalent to `PATCH /goals/{goal_id}/key_results/{id}` when you already know the Key Result ID.\n\n**Updatable fields:**\n- `confidence_level`, `current_value`, `start_value`, `target_value`\n- `title`, `description`: Update text fields\n- `milestones`: For milestone type, replaces ALL existing milestones\n- `owners`: Replaces ALL existing owners\n\n**Status Update Behavior:**\nA status update is automatically generated when the update changes the Key Result's `progress` or `confidence_level`, whether through `current_value`, `start_value`, `target_value` or `milestones`.\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n`id`, `progress`, `workpath_url`, `supports`, `supported_by`, `type`\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyresultFullupdateRequestbody"},"examples":{"Update confidence and value":{"value":{"confidence_level":7,"current_value":21}},"Update target only":{"value":{"target_value":30}},"Update title and description":{"value":{"title":"Teams have published their quarterly goals","description":"Track how many teams have published their Q1 goals in Workpath."}}}}}}},"delete":{"summary":"Delete a Key Result","tags":["KeyResult"],"responses":{"204":{"description":"No Content - Key Result successfully deleted"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"delete-key-result-by-id","description":"Convenience endpoint to delete a Key Result by its ID without needing the parent Goal ID.\n\nEquivalent to `DELETE /goals/{goal_id}/key_results/{id}` when you already know the Key Result ID.\n\n**Cascade behavior:**\n- Alignment links (supports/supported_by) pointing to/from this Key Result are removed\n- The parent Goal's progress is recalculated\n"}},"/initiatives":{"get":{"summary":"List Initiatives","tags":["Initiative"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Initiative"}},"examples":{"Example 1":{"value":[{"id":7,"title":"Roll out OKR training program to all teams","description":"Train every team lead in writing and reviewing OKRs before the Q2 planning cycle.","status":"in_progress","progress":0.4,"confidence_level":7,"start_date":"2026-01-01","target_date":"2026-03-31","external_id":"a1b2c3d4","created_at":"2026-01-15T10:30:00Z","updated_at":"2026-02-20T14:45:00Z","workpath_url":"https://acme.workpath.com/initiatives/7","owners":{"users":[{"id":8,"name":"Elena Fischer"}],"teams":[{"id":6,"name":"People \u0026 Culture"}]},"supports":{"goals":[{"id":42,"title":"Successfully implement the strategic operating model across the organization"}],"key_results":[{"id":12,"title":"Teams have drafted their quarterly goals"}]}},{"id":2,"title":"Company-wide digital transformation","description":"Strategic initiative to modernize our technology stack and processes.","status":"in_progress","progress":0.25,"start_date":"2026-01-01","target_date":"2026-12-31","external_id":"DT-2026-001","created_at":"2026-01-01T09:00:00Z","updated_at":"2026-03-15T16:20:00Z","workpath_url":"https://acme.workpath.com/initiatives/2","owners":{"organizations":[{"id":1,"name":"ACME Corporation"}]},"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities and measurable outcomes"}]}}]}}}},"headers":{"Pagination-Page":{"$ref":"#/components/headers/Pagination-Page"},"Pagination-Limit":{"$ref":"#/components/headers/Pagination-Limit"},"Pagination-Page-Count":{"$ref":"#/components/headers/Pagination-Page-Count"},"Pagination-Item-Count":{"$ref":"#/components/headers/Pagination-Item-Count"},"Pagination-Next-Page":{"$ref":"#/components/headers/Pagination-Next-Page"},"Link":{"$ref":"#/components/headers/Pagination-Link"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-initiatives","description":"This endpoint retrieves a list of Initiatives ordered by creation date (oldest first) and limited to 20 items per page.\n\n**Alignments:**\n- `supports` shows what Strategic Elements, Goals, Key Results, Initiatives, or KPIs this Initiative contributes to\n- `supported_by` shows what Strategic Elements, KPIs, Goals or Initiatives support this Initiative\n- Empty arrays are omitted from the response\n","parameters":[{"schema":{"type":"integer","example":1},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."},{"schema":{"type":"string","format":"date","example":"2026-01-01"},"in":"query","name":"start_date","description":"Return only Initiatives whose start and target dates overlap with the range `start_date` to `end_date`. Both parameters must be passed together. Initiatives without a start or target date are excluded."},{"schema":{"type":"string","format":"date","example":"2026-03-31"},"in":"query","name":"end_date","description":"Return only Initiatives whose start and target dates overlap with the range `start_date` to `end_date`. Both parameters must be passed together. Initiatives without a start or target date are excluded."},{"schema":{"type":"string","example":"a1b2c3d4"},"in":"query","name":"external_id","description":"Filter by external_id (exact match)."}]},"post":{"summary":"Create an Initiative","tags":["Initiative"],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Initiative"},"examples":{"Created Initiative":{"description":"Example of a single Initiative response (team Initiative with supports and supported_by).","summary":"Initiative Example","value":{"id":7,"title":"Roll out OKR training program to all teams","description":"Train every team lead in writing and reviewing OKRs before the Q2 planning cycle.","status":"in_progress","progress":0.4,"confidence_level":7,"start_date":"2026-01-01","target_date":"2026-03-31","external_id":"a1b2c3d4","created_at":"2026-01-15T10:30:00Z","updated_at":"2026-02-20T14:45:00Z","workpath_url":"https://acme.workpath.com/initiatives/7","owners":{"users":[{"id":8,"name":"Elena Fischer"}],"teams":[{"id":6,"name":"People \u0026 Culture"}]},"supports":{"goals":[{"id":42,"title":"Successfully implement the strategic operating model across the organization"}],"key_results":[{"id":12,"title":"Teams have drafted their quarterly goals"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"create-initiative","description":"Creates a new Initiative.\n\n**Required fields:**\n- `title` - Non-empty string\n- `owners` - Must contain exactly one organizational owner (team, Business Unit, or organization)\n\n**Optional fields:**\n- `description`, `status`, `start_date`, `target_date`, `external_id`, `confidence_level`\n- `owners.users` - Optional user owner (zero or one)\n- `supports` - Alignments to create\n\n**Status default:** If not provided, status defaults to `not_started`.\n\n**Ownership rules:**\n- Must specify exactly ONE organizational owner (team, Business Unit, or organization)\n- User owner is optional\n- Only the `id` field is used; names are ignored\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiativeCreateRequestbody"},"examples":{"Create with team owner":{"summary":"Create Initiative Request Example","description":"Example request body for creating a new Initiative with alignments.","value":{"title":"Roll out OKR training program to all teams","description":"Train every team lead in writing and reviewing OKRs before the Q2 planning cycle.","status":"in_progress","start_date":"2026-01-01","target_date":"2026-03-31","external_id":"a1b2c3d4","confidence_level":7,"owners":{"users":[{"id":8}],"teams":[{"id":6}]},"supports":{"goals":[{"id":42}],"key_results":[{"id":12}]}}},"Minimal (team only)":{"value":{"title":"Roll out OKR training program to all teams","owners":{"teams":[{"id":6}]}}},"Organization initiative":{"value":{"title":"Company-wide digital transformation","description":"Strategic initiative to modernize our technology stack and processes.","start_date":"2026-01-01","target_date":"2026-12-31","owners":{"organizations":[{"id":1}]},"supports":{"goals":[{"id":100}]}}}}}}}}},"/key_results/{id}/updates":{"parameters":[{"schema":{"type":"integer","example":12},"name":"id","in":"path","required":true,"description":"Unique identifier for the Key Result"}],"get":{"summary":"List Key Result Updates","tags":["KeyResult"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"updates":{"type":"array","items":{"$ref":"#/components/schemas/KeyResultUpdate"}}}},"examples":{"Example":{"value":{"updates":[{"id":123,"created_at":"2026-03-15T10:30:00Z","value":42.5,"progress":0.45,"confidence_level":7,"comment":"Good week, velocity picked up.","author":{"id":456,"name":"Jane Doe"}},{"id":124,"created_at":"2026-03-22T09:15:00Z","value":48.0,"progress":0.51,"confidence_level":8,"comment":null,"author":{"id":456,"name":"Jane Doe"}}]}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-key-result-updates","description":"Returns the chronological history of status updates for a Key Result, oldest first. This is a convenience endpoint that behaves identically to `GET /goals/{goal_id}/key_results/{id}/updates`.\n\nEach update captures the state at the time of the update: numeric value, progress, confidence level, an optional comment, and the author.\n\n**Ordering:** Results are returned `created_at ASC` (oldest → newest).\n\n**No pagination:** All updates are returned in a single response.\n"}},"/goals/{goal_id}/key_results/{id}/updates":{"parameters":[{"schema":{"type":"integer","example":7},"name":"goal_id","in":"path","required":true,"description":"Unique identifier for the parent Goal"},{"schema":{"type":"integer","example":12},"name":"id","in":"path","required":true,"description":"Unique identifier for the Key Result"}],"get":{"summary":"List Key Result Updates of a Goal","tags":["KeyResult"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"updates":{"type":"array","items":{"$ref":"#/components/schemas/KeyResultUpdate"}}}},"examples":{"Example":{"value":{"updates":[{"id":123,"created_at":"2026-03-15T10:30:00Z","value":42.5,"progress":0.45,"confidence_level":7,"comment":"Good week, velocity picked up.","author":{"id":456,"name":"Jane Doe"}}]}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-goal-key-result-updates","description":"Returns the chronological history of status updates for a Key Result nested under its parent Goal, oldest first.\n\nEach update captures the state at the time of the update: numeric value, progress, confidence level, an optional comment, and the author.\n\n**Ordering:** Results are returned `created_at ASC` (oldest → newest).\n\n**No pagination:** All updates are returned in a single response.\n"}},"/initiatives/{id}":{"parameters":[{"schema":{"type":"integer","example":3},"name":"id","in":"path","required":true,"description":"Unique identifier for the Initiative"}],"get":{"summary":"Get an Initiative","tags":["Initiative"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Initiative"},"examples":{"Team Initiative":{"description":"Example of a single Initiative response (team Initiative with supports and supported_by).","summary":"Initiative Example","value":{"id":7,"title":"Roll out OKR training program to all teams","description":"Train every team lead in writing and reviewing OKRs before the Q2 planning cycle.","status":"in_progress","progress":0.4,"confidence_level":7,"start_date":"2026-01-01","target_date":"2026-03-31","external_id":"a1b2c3d4","created_at":"2026-01-15T10:30:00Z","updated_at":"2026-02-20T14:45:00Z","workpath_url":"https://acme.workpath.com/initiatives/7","owners":{"users":[{"id":8,"name":"Elena Fischer"}],"teams":[{"id":6,"name":"People \u0026 Culture"}]},"supports":{"goals":[{"id":42,"title":"Successfully implement the strategic operating model across the organization"}],"key_results":[{"id":12,"title":"Teams have drafted their quarterly goals"}]}}},"Business Unit Initiative":{"summary":"Business Unit Initiative Example","description":"Example of a Business Unit Initiative with user owner.","value":{"id":20,"title":"EMEA OKR rollout program","description":"Bring every EMEA team onto the OKR operating model, starting with sales and operations.","status":"not_started","progress":0,"start_date":"2026-04-01","target_date":"2026-09-30","external_id":"e5f6a7b8","created_at":"2026-03-01T11:00:00Z","updated_at":"2026-03-01T11:00:00Z","workpath_url":"https://acme.workpath.com/initiatives/20","owners":{"users":[{"id":12,"name":"Sarah Johnson"}],"business_units":[{"id":2,"name":"ACME EMEA"}]},"supports":{"goals":[{"id":58,"title":"EMEA region achieves operational excellence in strategy execution"}]}}},"Organization Initiative":{"summary":"Organization Initiative Example","description":"Example of an organization-level Initiative with minimal fields.","value":{"id":2,"title":"Company-wide digital transformation","description":"Strategic initiative to modernize our technology stack and processes.","status":"in_progress","progress":0.25,"start_date":"2026-01-01","target_date":"2026-12-31","external_id":"DT-2026-001","created_at":"2026-01-01T09:00:00Z","updated_at":"2026-03-15T16:20:00Z","workpath_url":"https://acme.workpath.com/initiatives/2","owners":{"organizations":[{"id":1,"name":"ACME Corporation"}]},"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities and measurable outcomes"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-initiative-by-id","description":"This endpoint retrieves a specific Initiative identified by its ID.\n\nThe response includes:\n- Initiative details including title, description, status, and dates\n- Ownership information in the `owners` object\n- Alignments in `supports` (what this Initiative contributes to)\n- Alignments in `supported_by` (what supports this Initiative)\n\n**Ownership:** One organizational owner (team, Business Unit, or organization) plus optionally one user.\n"},"patch":{"summary":"Update an Initiative","tags":["Initiative"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Initiative"},"examples":{"Updated Initiative":{"description":"Example of a single Initiative response (team Initiative with supports and supported_by).","summary":"Initiative Example","value":{"id":7,"title":"Roll out OKR training program to all teams","description":"Train every team lead in writing and reviewing OKRs before the Q2 planning cycle.","status":"done","progress":0.4,"confidence_level":7,"start_date":"2026-01-01","target_date":"2026-03-31","external_id":"a1b2c3d4","created_at":"2026-01-15T10:30:00Z","updated_at":"2026-02-20T14:45:00Z","workpath_url":"https://acme.workpath.com/initiatives/7","owners":{"users":[{"id":8,"name":"Elena Fischer"}],"teams":[{"id":6,"name":"People \u0026 Culture"}]},"supports":{"goals":[{"id":42,"title":"Successfully implement the strategic operating model across the organization"}],"key_results":[{"id":12,"title":"Teams have drafted their quarterly goals"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"update-initiative","description":"Updates an existing Initiative.\n\nAll fields are optional. Only include fields you want to change.\n\n**Updatable fields:**\n- `title`, `description`, `status`, `start_date`, `target_date`, `external_id`, `confidence_level`\n- `owners` - Update ownership\n- `supports` - Update alignments\n\n**Supports replacement semantics:**\nWhen `supports` is included, it replaces all existing alignments (not additive).\n- To add an alignment: include all existing alignments plus the new one\n- To remove an alignment: include all existing alignments minus the one to remove\n- To clear all alignments: send `supports: {}`\n\n**Clearing values:**\nSend `null` for optional fields (`description`, `start_date`, `target_date`, `external_id`, `confidence_level`) to clear them.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiativeUpdateRequestbody"},"examples":{"Update status":{"value":{"status":"done"}},"Update with new alignments":{"summary":"Update Initiative Request Example","description":"Example request body for updating an Initiative (partial update).","value":{"description":"Train every team lead in writing and reviewing OKRs, including a refresher on vertical alignment.","supports":{"goals":[{"id":42}],"key_results":[{"id":12},{"id":13}]}}},"Clear description":{"value":{"description":null}}}}}}},"delete":{"summary":"Delete an Initiative","tags":["Initiative"],"responses":{"204":{"description":"No Content - Initiative successfully deleted"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"delete-initiative","description":"Deletes an Initiative.\n\nDeleted Initiatives can be restored by Workpath support if needed.\n\nAssociated alignments are also removed when the Initiative is deleted.\n"}},"/teams":{"get":{"summary":"List Teams","tags":["Team"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Team"}},"examples":{"Example":{"value":[{"id":4,"name":"Strategy Office","description":"Responsible for defining and tracking company-wide strategic objectives.","external_id":"WP-STR-001","created_at":"2025-12-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","workpath_url":"https://acme.workpath.com/teams/4","leads":[{"id":5,"name":"Thomas Weber"}],"business_unit":{"id":2,"name":"ACME EMEA"},"ancestors":[{"id":1,"name":"ACME Corp"},{"id":2,"name":"Executive Team"}],"children":[{"id":10,"name":"Strategy Analytics"}],"members":[{"id":5,"name":"Thomas Weber"},{"id":3,"name":"Maria Schmidt"},{"id":7,"name":"Sarah Johnson"}]},{"id":10,"name":"Strategy Analytics","description":null,"external_id":null,"created_at":"2025-12-20T09:00:00Z","updated_at":"2026-01-18T11:30:00Z","workpath_url":"https://acme.workpath.com/teams/10","leads":[],"business_unit":{"id":2,"name":"ACME EMEA"},"ancestors":[{"id":1,"name":"ACME Corp"},{"id":2,"name":"Executive Team"},{"id":4,"name":"Strategy Office"}],"children":[],"members":[{"id":15,"name":"Alex Chen"}]}]}}}},"headers":{"Pagination-Page":{"$ref":"#/components/headers/Pagination-Page"},"Pagination-Limit":{"$ref":"#/components/headers/Pagination-Limit"},"Pagination-Page-Count":{"$ref":"#/components/headers/Pagination-Page-Count"},"Pagination-Item-Count":{"$ref":"#/components/headers/Pagination-Item-Count"},"Pagination-Next-Page":{"$ref":"#/components/headers/Pagination-Next-Page"},"Link":{"$ref":"#/components/headers/Pagination-Link"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-teams","description":"Retrieves a paginated list of teams.\n\nOnly non-archived teams are returned. Teams are ordered by `created_at` ascending (oldest first).\n\n**Response includes:**\n- Team details (name, external_id, timestamps)\n- `leads` - Array of users who lead the team (currently max one, may change in the future)\n- `business_unit` - Business Unit the team belongs to (may be null)\n- `ancestors` - Hierarchy path from root to parent team\n- `children` - Direct child teams\n- `members` - All team members, including leads\n","parameters":[{"schema":{"type":"integer","example":3},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."}]}},"/initiatives/{id}/updates":{"parameters":[{"schema":{"type":"integer","example":3},"name":"id","in":"path","required":true,"description":"Unique identifier for the Initiative"}],"get":{"summary":"List Initiative Updates","tags":["Initiative"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"updates":{"type":"array","items":{"$ref":"#/components/schemas/InitiativeUpdate"}}}},"examples":{"Example":{"value":{"updates":[{"id":789,"created_at":"2026-03-10T08:00:00Z","status":"not_started","progress":null,"comment":"Kick-off done.","author":{"id":456,"name":"Jane Doe"}},{"id":790,"created_at":"2026-03-20T09:00:00Z","status":"in_progress","progress":0.65,"comment":"Unblocked after vendor call.","author":{"id":456,"name":"Jane Doe"}}]}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-initiative-updates","description":"Returns the chronological history of status updates for an Initiative, oldest first.\n\nEach update captures the status, optional progress, optional comment, and the author.\n\n**`progress`** is normalised to 0–1 (matching `GET /initiatives/{id}`) and is nullable — null when no explicit value was set or progress tracking is disabled on the Initiative.\n\n**Ordering:** Results are returned `created_at ASC` (oldest → newest).\n\n**No pagination:** All updates are returned in a single response.\n"}},"/teams/{id}":{"parameters":[{"schema":{"type":"integer","example":4},"name":"id","in":"path","required":true,"description":"Unique identifier for the team"}],"get":{"summary":"Get a Team","tags":["Team"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"},"examples":{"Team with hierarchy":{"summary":"Team Example","description":"Example of a team response with hierarchy, leads, and members. Note that leads are included in the members array.","value":{"id":4,"name":"Strategy Office","description":"Responsible for defining and tracking company-wide strategic objectives.","external_id":"WP-STR-001","created_at":"2025-12-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","workpath_url":"https://acme.workpath.com/teams/4","leads":[{"id":5,"name":"Thomas Weber"}],"business_unit":{"id":2,"name":"ACME EMEA"},"ancestors":[{"id":1,"name":"ACME Corp"},{"id":2,"name":"Executive Team"}],"children":[{"id":10,"name":"Strategy Analytics"}],"members":[{"id":5,"name":"Thomas Weber"},{"id":3,"name":"Maria Schmidt"},{"id":7,"name":"Sarah Johnson"}]}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-team-by-id","description":"Retrieves a specific team by its ID.\n\n**Response includes:**\n- Team details (name, external_id, timestamps)\n- `leads` - Array of users who lead the team (currently max one, may change in the future)\n- `business_unit` - Business Unit the team belongs to (may be null)\n- `ancestors` - Team hierarchy path from root to immediate parent, ordered from root to parent\n- `children` - Direct child teams (not recursive)\n- `members` - All team members, including leads\n\n**Note:** Archived teams are not accessible and will return a 404 error.\n"}},"/business_units":{"get":{"summary":"List Business Units","tags":["BusinessUnit"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BusinessUnit"}},"examples":{"Example":{"value":[{"id":2,"name":"ACME EMEA","workpath_url":"https://acme.workpath.com/goals/overview/business_units/2","visibility":"public","features":{"kpis":true,"strategic_elements":true,"initiatives":true}},{"id":5,"name":"ACME Ventures","workpath_url":"https://acme.workpath.com/goals/overview/business_units/5","visibility":"private","features":{"kpis":false,"strategic_elements":false,"initiatives":true}}]}}}},"headers":{"Pagination-Page":{"$ref":"#/components/headers/Pagination-Page"},"Pagination-Limit":{"$ref":"#/components/headers/Pagination-Limit"},"Pagination-Page-Count":{"$ref":"#/components/headers/Pagination-Page-Count"},"Pagination-Item-Count":{"$ref":"#/components/headers/Pagination-Item-Count"},"Pagination-Next-Page":{"$ref":"#/components/headers/Pagination-Next-Page"},"Link":{"$ref":"#/components/headers/Pagination-Link"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-business-units","description":"Retrieves a paginated list of Business Units, oldest first.\n\nAll Business Units are returned, private ones included. Archived Business Units are not returned. The list is empty when the account does not use Business Units.\n","parameters":[{"schema":{"type":"integer","example":2},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."}]}},"/business_units/{id}":{"parameters":[{"schema":{"type":"integer","example":2},"name":"id","in":"path","required":true,"description":"Unique identifier for the Business Unit"}],"get":{"summary":"Get a Business Unit","tags":["BusinessUnit"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessUnit"},"examples":{"Example":{"value":{"id":2,"name":"ACME EMEA","workpath_url":"https://acme.workpath.com/goals/overview/business_units/2","visibility":"public","features":{"kpis":true,"strategic_elements":true,"initiatives":true}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-business-unit-by-id","description":"Retrieves a specific Business Unit by its ID.\n\nArchived Business Units, and any Business Unit when the account does not use them, return a 404 error.\n"}},"/users":{"get":{"summary":"List Users","tags":["User"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}},"examples":{"Example":{"value":[{"id":5,"email":"thomas.weber@acme.com","first_name":"Thomas","last_name":"Weber","name":"Thomas Weber","external_id":"EMP-001","created_at":"2025-01-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","deactivated_at":null,"last_active_at":"2026-01-21T08:15:00Z","workpath_url":"https://acme.workpath.com/users/5","status":"active","license":"standard","roles":["super_admin","coach"],"business_units":[{"id":2,"name":"ACME EMEA"}]},{"id":12,"email":"sarah.johnson@acme.com","first_name":"Sarah","last_name":"Johnson","name":"Sarah Johnson","external_id":null,"created_at":"2025-03-01T09:00:00Z","updated_at":"2026-01-18T16:20:00Z","deactivated_at":null,"last_active_at":"2026-01-20T11:30:00Z","workpath_url":"https://acme.workpath.com/users/12","status":"active","license":"viewer","roles":[],"business_units":[{"id":2,"name":"ACME EMEA"},{"id":3,"name":"ACME Americas"}]}]}}}},"headers":{"Pagination-Page":{"$ref":"#/components/headers/Pagination-Page"},"Pagination-Limit":{"$ref":"#/components/headers/Pagination-Limit"},"Pagination-Page-Count":{"$ref":"#/components/headers/Pagination-Page-Count"},"Pagination-Item-Count":{"$ref":"#/components/headers/Pagination-Item-Count"},"Pagination-Next-Page":{"$ref":"#/components/headers/Pagination-Next-Page"},"Link":{"$ref":"#/components/headers/Pagination-Link"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-users","description":"Retrieves a paginated list of users.\n\nOnly non-deleted users are returned. Deactivated users (with a non-null `deactivated_at`) are still included. Users are ordered by `created_at` ascending (oldest first).\n\n**Licenses:**\nEach user has exactly one license that determines their overall access level:\n- `standard` - Normal license with access to most of the Workpath platform\n- `analyst` - Power-user license with access to reports, insights, and summaries with filtering options\n- `viewer` - Read-only access; can view Goals but cannot create or update them\n\n**Roles:**\nUsers can have zero, one, or multiple roles that grant additional permissions:\n- `super_admin` - Administrator with full platform permissions including managing integrations\n- `program_lead` - Responsible for program roll-out, can manage users, teams, Goal Cycles, and assign Coaches\n- `coach` - Can be assigned to teams to support them, create and edit Goals (but not update progress/status)\n\n**Response includes:**\n- User details (email, name, external_id, timestamps)\n- `license` - User's license type\n- `roles` - Array of additional roles (may be empty)\n- `business_units` - Business Units the user belongs to (may be empty)\n- `deactivated_at` - Timestamp if user is deactivated, null if active\n- `last_active_at` - Timestamp when user was last active, null if no activity has been recorded\n","parameters":[{"schema":{"type":"integer","example":3},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."}]}},"/users/{id}":{"parameters":[{"schema":{"type":"integer","example":5},"name":"id","in":"path","required":true,"description":"Unique identifier for the user"}],"get":{"summary":"Get a User","tags":["User"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"},"examples":{"User with roles":{"summary":"User Example","description":"Example of a user response with standard license, multiple roles, and Business Unit membership.","value":{"id":5,"email":"thomas.weber@acme.com","first_name":"Thomas","last_name":"Weber","name":"Thomas Weber","external_id":"EMP-001","created_at":"2025-01-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","deactivated_at":null,"last_active_at":"2026-01-21T08:15:00Z","workpath_url":"https://acme.workpath.com/users/5","status":"active","license":"standard","roles":["super_admin","coach"],"business_units":[{"id":2,"name":"ACME EMEA"}]}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-user-by-id","description":"Retrieves a specific user by their ID.\n\n**Licenses:**\nEach user has exactly one license that determines their overall access level:\n- `standard` - Normal license with access to most of the Workpath platform\n- `analyst` - Power-user license with access to reports, insights, and summaries with filtering options\n- `viewer` - Read-only access; can view Goals but cannot create or update them\n\n**Roles:**\nUsers can have zero, one, or multiple roles that grant additional permissions:\n- `super_admin` - Administrator with full platform permissions including managing integrations\n- `program_lead` - Responsible for program roll-out, can manage users, teams, Goal Cycles, and assign Coaches\n- `coach` - Can be assigned to teams to support them, create and edit Goals (but not update progress/status)\n\n**Response includes:**\n- User details (email, name, external_id, timestamps)\n- `license` - User's license type\n- `roles` - Array of additional roles (may be empty)\n- `business_units` - Business Units the user belongs to (may be empty)\n- `deactivated_at` - Timestamp if user is deactivated, null if active\n- `last_active_at` - Timestamp when user was last active, null if no activity has been recorded\n\n**Note:** Deleted users are not accessible and will return a 404 error.\n"},"delete":{"summary":"Delete a User","tags":["User"],"operationId":"delete-user","description":"Permanently deletes a user and anonymizes their personal data (name, email, etc.).\n\n**The user must be deactivated first** — attempting to delete an active user returns 422.\n\n**Note on SCIM:** If users are managed via SCIM, a SCIM deactivation (`active: false`) leaves them ready to delete via this endpoint. Users removed with a SCIM DELETE are already deleted.\n\n**Note:** Deleted users are not accessible via the API and will return a 404 error on subsequent requests.\n","responses":{"204":{"description":"No Content"},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"422":{"$ref":"#/components/responses/UnprocessableEntityError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}}}},"/users/{id}/deactivate":{"parameters":[{"schema":{"type":"integer","example":5},"name":"id","in":"path","required":true,"description":"Unique identifier for the user"}],"post":{"summary":"Deactivate a User","tags":["User"],"operationId":"deactivate-user","description":"Deactivates a user. Deactivated users can no longer log in but are still returned by the API (with a non-null `deactivated_at`).\n\nThis endpoint is idempotent — calling it on an already-deactivated user returns 200 with no change.\n\n**⚠️ SCIM integration warning:** If users in your account are managed via SCIM (e.g. from Entra ID or Okta), SCIM is the source of truth for user lifecycle. Deactivating users manually via this endpoint may conflict with your SCIM provisioning setup. Use SCIM deprovisioning to deactivate users in that case.\n\n**Note:** Deleted users are not accessible and will return a 404 error.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}}}},"/cycles":{"get":{"summary":"List Cycles","tags":["Cycle"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Cycle"}},"examples":{"Example":{"value":[{"id":9,"title":"Q1 2026","start_date":"2026-01-01","target_date":"2026-03-31","current":true},{"id":10,"title":"Q2 2026","start_date":"2026-04-01","target_date":"2026-06-30","current":false},{"id":11,"title":"H1 2026","start_date":"2026-01-01","target_date":"2026-06-30","current":false}]}}}},"headers":{"Pagination-Page":{"$ref":"#/components/headers/Pagination-Page"},"Pagination-Limit":{"$ref":"#/components/headers/Pagination-Limit"},"Pagination-Page-Count":{"$ref":"#/components/headers/Pagination-Page-Count"},"Pagination-Item-Count":{"$ref":"#/components/headers/Pagination-Item-Count"},"Pagination-Next-Page":{"$ref":"#/components/headers/Pagination-Next-Page"},"Link":{"$ref":"#/components/headers/Pagination-Link"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-cycles","description":"Retrieves a paginated list of planning cycles.\n\nCycles are ordered by `created_at` ascending (oldest first).\n\n**Response includes:**\n- Cycle details (title, start_date, target_date)\n- `current` - Whether this is the organization's current cycle (at most one is), determined within the organization's leading rhythm\n","parameters":[{"schema":{"type":"integer","example":1},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."}]}},"/strategic_elements":{"get":{"summary":"List Strategic Elements","tags":["StrategicElement"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StrategicElement"}},"examples":{"Example":{"value":[{"id":1,"title":"Become market leader in DACH","description":"Our north star for the next 3 years.","start_date":"2026-01-01","end_date":"2026-12-31","created_at":"2025-10-01T09:00:00Z","updated_at":"2026-01-15T14:30:00Z","workpath_url":"https://company.workpath.com/strategicElements/1","category":{"id":3,"name":"Financial"},"external_urls":[{"name":"Strategy Deck","url":"https://docs.example.com/strategy"}],"owners":{"users":[{"id":5,"name":"Jane Doe"}],"organizations":[{"id":1,"name":"Workpath"}]}}]}}}},"headers":{"Pagination-Page":{"$ref":"#/components/headers/Pagination-Page"},"Pagination-Limit":{"$ref":"#/components/headers/Pagination-Limit"},"Pagination-Page-Count":{"$ref":"#/components/headers/Pagination-Page-Count"},"Pagination-Item-Count":{"$ref":"#/components/headers/Pagination-Item-Count"},"Pagination-Next-Page":{"$ref":"#/components/headers/Pagination-Next-Page"},"Link":{"$ref":"#/components/headers/Pagination-Link"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-strategic-elements","description":"Retrieves a paginated list of Strategic Elements visible to the API client.\n\nStrategic Elements are ordered by `created_at` ascending (oldest first).\n","parameters":[{"schema":{"type":"integer","example":1},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."}]}},"/strategic_elements/{id}":{"parameters":[{"schema":{"type":"integer","example":1},"name":"id","in":"path","required":true,"description":"Unique identifier for the Strategic Element"}],"get":{"summary":"Get a Strategic Element","tags":["StrategicElement"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategicElement"},"examples":{"Example":{"value":{"id":1,"title":"Become market leader in DACH","description":"Our north star for the next 3 years.","start_date":"2026-01-01","end_date":"2026-12-31","created_at":"2025-10-01T09:00:00Z","updated_at":"2026-01-15T14:30:00Z","workpath_url":"https://company.workpath.com/strategicElements/1","category":{"id":3,"name":"Financial"},"external_urls":[{"name":"Strategy Deck","url":"https://docs.example.com/strategy"}],"owners":{"users":[{"id":5,"name":"Jane Doe"}],"organizations":[{"id":1,"name":"Workpath"}]},"supported_by":{"goals":[{"id":42,"title":"Grow revenue in DACH"}]}}}}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-strategic-element","description":"Retrieves a single Strategic Element by its ID.\n"}},"/notes":{"get":{"summary":"List Notes","tags":["Note"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Note"}},"examples":{"Example":{"value":[{"id":123,"kind":"risk","title":"Supplier delivery slipping","description":"We may miss the Q2 milestone.","resolved_at":null,"created_at":"2026-01-20T14:45:00Z","updated_at":"2026-01-21T09:10:00Z","creator":{"id":5,"name":"Thomas Weber"},"resource":{"type":"goal","id":42,"title":"Be number #1 in our market"},"comments":[{"id":9,"text":"Agreed, escalating to procurement.","creator":{"id":7,"name":"Maria Klein"},"created_at":"2026-01-20T16:00:00Z","updated_at":"2026-01-20T16:00:00Z"}]}]}}}},"headers":{"Pagination-Page":{"$ref":"#/components/headers/Pagination-Page"},"Pagination-Limit":{"$ref":"#/components/headers/Pagination-Limit"},"Pagination-Page-Count":{"$ref":"#/components/headers/Pagination-Page-Count"},"Pagination-Item-Count":{"$ref":"#/components/headers/Pagination-Item-Count"},"Pagination-Next-Page":{"$ref":"#/components/headers/Pagination-Next-Page"},"Link":{"$ref":"#/components/headers/Pagination-Link"}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"list-notes","description":"Retrieves a paginated list of public notes attached to Goals, Key Results, Initiatives, or KPIs.\n\nOnly notes on resources visible to the API client are returned. Notes are ordered by\n`created_at` ascending (oldest first).\n","parameters":[{"schema":{"type":"integer","example":1},"in":"query","name":"page","description":"The page you want to request. First page will be returned if omitted or invalid."}]}},"/notes/{id}":{"parameters":[{"schema":{"type":"integer","example":123},"name":"id","in":"path","required":true,"description":"Unique identifier for the note"}],"get":{"summary":"Get a Note","tags":["Note"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Note"}}}},"401":{"$ref":"#/components/responses/UnauthorizedError"},"403":{"$ref":"#/components/responses/ForbiddenError"},"404":{"$ref":"#/components/responses/NotFoundError"},"406":{"$ref":"#/components/responses/NotAcceptableError"},"500":{"$ref":"#/components/responses/InternalServerError"},"503":{"$ref":"#/components/responses/ServiceUnavailableError"}},"operationId":"get-note-by-id","description":"Retrieves a single public note by its ID.\n"}},"/.well-known/webhooks/public-key":{"servers":[{"url":"https://connect.workpath.com"}],"get":{"summary":"Get Webhook Signing Keys","operationId":"getWebhookPublicKeys","tags":["Webhooks"],"security":[],"description":"Returns the Ed25519 public key(s) used to sign webhook deliveries. Verify an\nincoming webhook's `X-Workpath-Signature` against the key whose `key_id` matches the\ndelivery's `X-Workpath-Key-ID` header.\n\n`public_key` is the base64-encoded raw 32-byte Ed25519 key. Currently one key is returned;\nthe `keys` array leaves room for rotating keys without breaking clients.\nCacheable for one hour (`Cache-Control: max-age=3600`).\n\nNote: this endpoint is served at the host root, not under `/api/v3`, and is unauthenticated.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["keys"],"properties":{"keys":{"type":"array","items":{"type":"object","required":["key_id","public_key","algorithm"],"properties":{"key_id":{"type":"string","example":"production"},"public_key":{"type":"string","description":"Base64-encoded raw 32-byte Ed25519 public key.","example":"n3kQv9C2bJ7rXsE0aYwLpUf4hD1gMzN6tBoR8sViKcA="},"algorithm":{"type":"string","enum":["Ed25519"]}}}}}},"examples":{"Example":{"value":{"keys":[{"key_id":"production","public_key":"n3kQv9C2bJ7rXsE0aYwLpUf4hD1gMzN6tBoR8sViKcA=","algorithm":"Ed25519"}]}}}}}}}}}},"webhooks":{"goal.created":{"post":{"summary":"Goal created","operationId":"webhookGoalCreated","tags":["Webhooks"],"description":"Workpath POSTs the signed envelope below to the endpoint URL of every subscription to\nthis event type when a Goal is created. Verify `X-Workpath-Signature` over the raw\nbody, then respond with any 2xx to acknowledge. Secret Goals are never delivered.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WebhookGoal"}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"goal.created","event_id":9,"created_at":"2026-04-30T09:17:32Z","data":{"id":42,"title":"Increase EU revenue by 15%","description":"Drive growth across DACH and Nordics with focused account expansion.","draft":false,"progress":0,"confidence_level":8,"start_date":"2026-01-01","target_date":"2026-06-30","created_at":"2026-01-08T14:22:00Z","updated_at":"2026-01-08T14:22:00Z"}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}},"goal.updated":{"post":{"summary":"Goal updated","operationId":"webhookGoalUpdated","tags":["Webhooks"],"description":"Sent when a Goal's intrinsic properties change (title, description, dates, progress,\nconfidence, draft). Relation-only changes — owner reassignment, label/alignment edits —\ndo not fire a webhook. A Key Result status update fires it only if the Goal's progress or\nconfidence actually changes. Verify the signature and respond 2xx.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WebhookGoal"}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"goal.updated","event_id":42,"created_at":"2026-04-30T09:17:32Z","data":{"id":42,"title":"Increase EU revenue by 15%","description":"Drive growth across DACH and Nordics with focused account expansion.","draft":false,"progress":0.45,"confidence_level":8,"start_date":"2026-01-01","target_date":"2026-06-30","created_at":"2026-01-08T14:22:00Z","updated_at":"2026-04-30T09:17:30Z"}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}},"goal.deleted":{"post":{"summary":"Goal deleted","operationId":"webhookGoalDeleted","tags":["Webhooks"],"description":"Sent when a Goal is deleted. The payload carries only the Goal `id` — there is no entity\nstate to deliver. Verify the signature and respond 2xx.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","example":42}}}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"goal.deleted","event_id":57,"created_at":"2026-04-30T09:17:32Z","data":{"id":42}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}},"key_result.created":{"post":{"summary":"Key Result created","operationId":"webhookKeyResultCreated","tags":["Webhooks"],"description":"Sent when a Key Result is created. The payload is the Key Result's own attributes;\nverify `X-Workpath-Signature` over the raw body, then respond 2xx. Key Results under a\nsecret Goal are never delivered.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WebhookKeyResult"}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"key_result.created","event_id":10,"created_at":"2026-04-30T09:18:11Z","data":{"id":4711,"title":"Net Promoter Score reaches 60","description":"Drive customer satisfaction across self-serve cohorts.","type":"numeric","progress":0,"confidence_level":6,"current_value":42,"start_value":42,"target_value":60,"currency":null,"created_at":"2026-04-30T09:18:10Z","updated_at":"2026-04-30T09:18:10Z"}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}},"key_result.updated":{"post":{"summary":"Key Result updated","operationId":"webhookKeyResultUpdated","tags":["Webhooks"],"description":"Sent when a Key Result's intrinsic properties change (title, description, values, currency,\nconfidence, type).\nA status update that moves `current_value` fires this (and a `goal.updated` for its Goal).\nVerify the signature and respond 2xx.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WebhookKeyResult"}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"key_result.updated","event_id":11,"created_at":"2026-04-30T09:20:00Z","data":{"id":4711,"title":"Net Promoter Score reaches 60","description":"Drive customer satisfaction across self-serve cohorts.","type":"numeric","progress":0.6,"confidence_level":6,"current_value":51,"start_value":42,"target_value":60,"currency":null,"created_at":"2026-04-30T09:18:10Z","updated_at":"2026-04-30T09:20:00Z"}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}},"key_result.deleted":{"post":{"summary":"Key Result deleted","operationId":"webhookKeyResultDeleted","tags":["Webhooks"],"description":"Sent when a Key Result is deleted — including when its parent Goal is deleted (the Goal's\nKey Results are deleted with it). The payload carries only the `id`. Verify the signature\nand respond 2xx.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","example":4711}}}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"key_result.deleted","event_id":12,"created_at":"2026-04-30T09:25:00Z","data":{"id":4711}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}},"initiative.created":{"post":{"summary":"Initiative created","operationId":"webhookInitiativeCreated","tags":["Webhooks"],"description":"Sent when an Initiative is created. The payload is the Initiative's own attributes;\nverify the signature and respond 2xx.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WebhookInitiative"}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"initiative.created","event_id":20,"created_at":"2026-04-30T09:19:02Z","data":{"id":8912,"title":"Launch self-service onboarding flow","description":"Replace the assisted setup with a guided product tour.","status":"not_started","confidence_level":7,"progress":0,"start_date":"2026-02-01","target_date":"2026-05-31","external_id":null,"created_at":"2026-04-30T09:19:00Z","updated_at":"2026-04-30T09:19:00Z"}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}},"initiative.updated":{"post":{"summary":"Initiative updated","operationId":"webhookInitiativeUpdated","tags":["Webhooks"],"description":"Sent when an Initiative's intrinsic properties change (title, description, status, dates,\nexternal id, confidence, progress). Verify the signature and respond 2xx.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WebhookInitiative"}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"initiative.updated","event_id":21,"created_at":"2026-04-30T09:21:00Z","data":{"id":8912,"title":"Launch self-service onboarding flow","description":"Replace the assisted setup with a guided product tour.","status":"in_danger","confidence_level":7,"progress":0.4,"start_date":"2026-02-01","target_date":"2026-05-31","external_id":null,"created_at":"2026-04-30T09:19:00Z","updated_at":"2026-04-30T09:21:00Z"}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}},"initiative.deleted":{"post":{"summary":"Initiative deleted","operationId":"webhookInitiativeDeleted","tags":["Webhooks"],"description":"Sent when an Initiative is deleted. The payload carries only the `id`. Verify the\nsignature and respond 2xx.\n","parameters":[{"$ref":"#/components/parameters/WebhookEventHeader"},{"$ref":"#/components/parameters/WebhookSignatureHeader"},{"$ref":"#/components/parameters/WebhookKeyIdHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookEnvelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["id"],"properties":{"id":{"type":"integer","example":8912}}}}}]},"examples":{"Example":{"value":{"schema_version":1,"account_subdomain":"acme","event":"initiative.deleted","event_id":22,"created_at":"2026-04-30T09:26:00Z","data":{"id":8912}}}}}}},"responses":{"2XX":{"description":"Any 2xx acknowledges receipt. A non-2xx response or timeout is retried."}}}}},"components":{"parameters":{"WebhookEventHeader":{"name":"X-Workpath-Event","in":"header","required":true,"description":"The event key (matches `event` in the body).","schema":{"type":"string","example":"goal.created"}},"WebhookSignatureHeader":{"name":"X-Workpath-Signature","in":"header","required":true,"description":"Base64-encoded raw Ed25519 signature of the exact request body.","schema":{"type":"string"}},"WebhookKeyIdHeader":{"name":"X-Workpath-Key-ID","in":"header","required":true,"description":"Identifies which published public key signed this delivery.","schema":{"type":"string","example":"production"}}},"securitySchemes":{"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"The token of an API client. Admins create API clients in Workpath under Settings → Integrations → API clients."}},"responses":{"UnauthorizedError":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"}}}},"ForbiddenError":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"}}}},"NotFoundError":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"}}}},"NotAcceptableError":{"description":"Not Acceptable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotAcceptableError"}}}},"UnprocessableEntityError":{"description":"Unprocessable Entity - The request was well-formed but contains invalid values.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntityError"}}}},"InternalServerError":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"}}}},"ServiceUnavailableError":{"description":"Service Unavailable. We are doing maintenance work on the API. Please check status.workpath.com for more information and try again later."}},"headers":{"Pagination-Page":{"schema":{"type":"integer","example":1},"description":"The page you received"},"Pagination-Limit":{"schema":{"type":"integer","example":20},"description":"Maximum items per page"},"Pagination-Page-Count":{"schema":{"type":"integer","example":3},"description":"Total number of pages"},"Pagination-Item-Count":{"schema":{"type":"integer","example":43},"description":"Total number of items"},"Pagination-Next-Page":{"schema":{"type":"string","example":"https://connect.workpath.com/api/v3/goals?page=2"},"description":"URL of the next page. Will be omitted in last page response"},"Pagination-Link":{"schema":{"type":"string","example":"\u003chttps://connect.workpath.com/api/v3/goals?page=2\u003e; rel=\"next\""},"description":"Link header containing URL for next page. Will be omitted in last page response"}},"schemas":{"AlignmentIdReference":{"title":"Alignment ID Reference","type":"object","description":"A reference to an entity by ID only, used in create/update request bodies for alignments.","required":["id"],"properties":{"id":{"type":"integer","description":"Unique identifier for the entity to align to.","example":1}}},"AlignmentReference":{"title":"Alignment Reference","type":"object","description":"A reference to an aligned entity, used in supports and supported_by relationships.","required":["id","title"],"properties":{"id":{"type":"integer","description":"Unique identifier for the aligned entity.","example":1},"title":{"type":"string","description":"Title of the aligned entity.","example":"Be number #1 in our market"}}},"Alignments":{"title":"Alignments","type":"object","description":"Alignments showing what this resource supports or is supported by.\n\nEach property contains an array of entity references. Empty arrays are omitted from the response.\nThe entire object is omitted if there are no alignments.\n","properties":{"goals":{"type":"array","description":"Aligned Goals.","items":{"$ref":"#/components/schemas/AlignmentReference"}},"key_results":{"type":"array","description":"Aligned Key Results.","items":{"$ref":"#/components/schemas/AlignmentReference"}},"initiatives":{"type":"array","description":"Aligned Initiatives.","items":{"$ref":"#/components/schemas/AlignmentReference"}},"kpis":{"type":"array","description":"Aligned KPIs.","items":{"$ref":"#/components/schemas/AlignmentReference"}},"strategic_elements":{"type":"array","description":"Aligned Strategic Elements.","items":{"$ref":"#/components/schemas/AlignmentReference"}}}},"AlignmentsRequest":{"title":"Alignments Request","type":"object","description":"Alignments to create, used in create/update request bodies.\n\nEach property contains an array of entity ID references. Only the `id` field is required;\nany other fields (like `title`) are ignored.\n\nWhen used in PATCH requests, this replaces all existing alignments (not additive).\n","properties":{"goals":{"type":"array","description":"Goals to align to.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"key_results":{"type":"array","description":"Key Results to align to.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"initiatives":{"type":"array","description":"Initiatives to align to.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"kpis":{"type":"array","description":"KPIs to align to.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"strategic_elements":{"type":"array","description":"Strategic Elements to align to.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}}}},"BusinessUnit":{"title":"Business Unit","type":"object","description":"A Business Unit is a part of the customer's organization, such as a division or a region, with its own teams and its own set of Workpath modules.\n","required":["id","name","workpath_url","visibility","features"],"properties":{"id":{"type":"integer","description":"Unique identifier for the Business Unit.","example":2},"name":{"type":"string","description":"Name of the Business Unit.","example":"ACME EMEA"},"workpath_url":{"type":"string","format":"uri","description":"Link to the Business Unit's overview page in Workpath.","example":"https://acme.workpath.com/goals/overview/business_units/2"},"visibility":{"type":"string","enum":["public","private"],"description":"`private` Business Units and their content are only visible to their members in Workpath. All Business Units are listed here, but content of a private one is only returned if the API client's creator is a member of it.\n","example":"public"},"features":{"type":"object","description":"Which optional modules are switched on for the Business Unit.","required":["kpis","strategic_elements","initiatives"],"properties":{"kpis":{"type":"boolean","description":"KPIs are used in this Business Unit.","example":true},"strategic_elements":{"type":"boolean","description":"Strategic Elements are used in this Business Unit.","example":false},"initiatives":{"type":"boolean","description":"Initiatives are used in this Business Unit.","example":true}}}}},"BusinessUnitReference":{"title":"Business Unit Reference","type":"object","description":"A reference to a Business Unit in the Workpath platform.","required":["id","name"],"properties":{"id":{"type":"integer","description":"Unique identifier for the Business Unit.","example":1},"name":{"type":"string","description":"Name of the Business Unit.","example":"ACME EMEA"}}},"Collaborators":{"title":"Collaborators","type":"object","description":"Users and teams collaborating on or following a resource. Empty arrays may be omitted from the response; an empty object is returned when there are none.\n","properties":{"users":{"type":"array","description":"User collaborators, sorted alphabetically by name.","items":{"$ref":"#/components/schemas/UserReference"}},"teams":{"type":"array","description":"Team collaborators, sorted alphabetically by name.","items":{"$ref":"#/components/schemas/TeamReference"}}},"examples":[{"users":[{"id":12,"name":"Grace Hopper"}],"teams":[{"id":5,"name":"Data Analytics"}]}]},"Cycle":{"title":"Cycle","type":"object","description":"A Cycle is a planning period, usually a quarter or half-year such as \"Q1 2026\". Goals are planned and reviewed per cycle: a Goal belongs to every cycle its dates overlap.\n","required":["id","title","start_date","target_date","current"],"properties":{"id":{"type":"integer","description":"Unique identifier for the cycle.","example":9},"title":{"type":"string","description":"Display title of the cycle.","example":"Q1 2026"},"start_date":{"type":"string","format":"date","description":"Start date of the cycle in ISO 8601 format.","example":"2026-01-01"},"target_date":{"type":"string","format":"date","description":"Last day of the cycle.","example":"2026-03-31"},"current":{"type":"boolean","description":"Whether this is the organization's current cycle. Accounts can plan in several rhythms (for example quarterly and yearly), and only cycles of the organization's leading rhythm are considered: the one covering today (the shortest, if several do); if none covers today, the most recently started cycle, or else the next upcoming one. At most one cycle is current.","example":true}},"examples":[{"id":9,"title":"Q1 2026","start_date":"2026-01-01","target_date":"2026-03-31","current":true}]},"CycleReference":{"title":"Cycle Reference","type":"object","description":"Reference to a planning cycle that a Goal belongs to.","required":["id","title"],"properties":{"id":{"type":"integer","description":"Unique identifier for the cycle.","example":9},"title":{"type":"string","description":"Display title of the cycle.","example":"Q1 2026"}}},"UnauthorizedError":{"title":"Error: 401 Unauthorized","type":"object","description":"Returned when the request cannot be authenticated due to an invalid or missing authorization token. Typically corresponds to a 401 Unauthorized HTTP status code.\n","examples":[{"errors":[{"code":"unauthorized","message":"Your Connect API token is missing or invalid. Send it as `Authorization: Bearer \u003ctoken\u003e`. Admins create API clients and their tokens in Workpath under Settings → Integrations → API clients. API reference: https://connect.workpath.com/api/v3/docs"}]}],"required":["errors"],"properties":{"errors":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","description":"A unique error code indicating the type of authentication error.","example":"unauthorized","readOnly":true},"message":{"type":"string","description":"A detailed message explaining the reason for the authentication failure, such as an invalid token or incorrect Authorization header format.\n","example":"Your Connect API token is missing or invalid. Send it as `Authorization: Bearer \u003ctoken\u003e`. Admins create API clients and their tokens in Workpath under Settings → Integrations → API clients. API reference: https://connect.workpath.com/api/v3/docs","readOnly":true}}}}}},"ForbiddenError":{"title":"Error: 403 Forbidden","type":"object","additionalProperties":false,"examples":[{"errors":[{"code":"forbidden","message":"You don't have permission to access this resource."}]}],"description":"Forbidden. You don't have permission to access this resource.","required":["errors"],"properties":{"errors":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","example":"forbidden","readOnly":true},"message":{"type":"string","example":"You don't have permission to access this resource.","readOnly":true}},"readOnly":true}}}},"NotFoundError":{"title":"Error: 404 Not Found","type":"object","examples":[{"errors":[{"code":"not_found","message":"Not found"}]}],"description":"Returned when a requested resource is not found.","required":["errors"],"properties":{"errors":{"type":"array","uniqueItems":true,"minItems":1,"items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","example":"not_found","readOnly":true},"message":{"type":"string","description":"Human-readable explanation. The exact wording may change; match on `code`.","readOnly":true}}}}}},"NotAcceptableError":{"title":"Error: 406 Not Acceptable","type":"object","examples":[{"errors":[{"code":"not_acceptable","message":"The Workpath Connect API only accepts and responds with JSON. Send `Accept: application/json` with every request, and `Content-Type: application/json` with a valid JSON body for POST and PATCH requests. API reference: https://connect.workpath.com/api/v3/docs"}]}],"description":"Returned when the requested content type is not acceptable.","required":["errors"],"properties":{"errors":{"type":"array","uniqueItems":true,"minItems":1,"items":{"type":"object","additionalProperties":false,"required":["code","message"],"properties":{"code":{"type":"string","example":"not_acceptable","readOnly":true},"message":{"type":"string","example":"The Workpath Connect API only accepts and responds with JSON. Send `Accept: application/json` with every request, and `Content-Type: application/json` with a valid JSON body for POST and PATCH requests. API reference: https://connect.workpath.com/api/v3/docs","readOnly":true}}}}}},"UnprocessableEntityError":{"title":"Error: 422 Unprocessable Entity","type":"object","description":"Returned when the request is well-formed but contains semantic errors, such as invalid or missing attributes in the JSON body. Typically corresponds to a 422 Unprocessable Entity HTTP status code.\n","examples":[{"errors":[{"attribute":"current_value","code":"blank","message":"Current value can't be blank."}]}],"required":["errors"],"properties":{"errors":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["attribute","code","message"],"properties":{"attribute":{"type":"string","description":"The name of the attribute that caused the error.","example":"current_value","readOnly":true},"code":{"type":"string","description":"A unique error code that identifies the type of error.","example":"blank","readOnly":true},"message":{"type":"string","description":"A human-readable message that describes the error.","example":"Current value can't be blank.","readOnly":true}}}}}},"InternalServerError":{"title":"Error: 500 Internal Server Error","type":"object","examples":[{"errors":[{"code":"internal_server_error","message":"Internal Server Error. The Workpath team has been notified and will investigate the issue. Feel free to contact us at support@workpath.com"}]}],"description":"Internal Server Error. The Workpath team has been notified and will investigate the issue. Feel free to contact us at support@workpath.com","required":["errors"],"properties":{"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","example":"internal_server_error"},"message":{"type":"string","example":"Internal Server Error. The Workpath team has been notified and will investigate the issue. Feel free to contact us at support@workpath.com"}}}}}},"Goal":{"title":"Goal","type":"object","description":"A Goal describes an outcome that a team, a Business Unit or the whole organization wants to achieve within a time period, typically a quarter.\n\n**Ownership:**\n- All Goals have exactly one user as owner.\n- Goals additionally have at most one of: team, Business Unit, or organization as owner.\n- It is currently not possible to have multiple users, teams, Business Units, or organizations as owners.\n\n**Collaborators and followers:**\n- `collaborators` are the users and teams actively working on the Goal alongside its owners.\n- `followers` are the users and teams that only follow the Goal's progress.\n- The Goal's owners are not repeated in `collaborators`.\n- Both objects are always present; empty arrays are omitted, and a Goal without any collaborations returns empty objects.\n\n**Alignments:**\n- `supports` shows what Strategic Elements, Goals, Key Results, Initiatives, or KPIs this Goal contributes to.\n- `supported_by` shows what Goals, Initiatives, or KPIs support this Goal.\n- Empty alignment arrays and empty objects are omitted from the response.\n","required":["id","title","draft","progress","confidence_level","start_date","target_date","created_at","updated_at","workpath_url","collaborators","followers","labels","cycles","key_results"],"properties":{"id":{"type":"integer","description":"Unique identifier for the Goal.","example":42},"title":{"type":"string","description":"Title of the Goal.","example":"Successfully implement the strategic operating model across the organization"},"description":{"type":["string","null"],"description":"Detailed description of the Goal.","example":"Establish a consistent approach to strategy execution by rolling out OKRs company-wide."},"draft":{"type":"boolean","description":"Whether the Goal is still being planned, typically for an upcoming cycle. Draft Goals do not count towards the progress of the Goals they support. Set to `false` to activate a Goal.","example":false},"progress":{"type":"number","minimum":0,"maximum":1,"description":"Progress towards the Goal from 0 to 1, calculated by Workpath as the average progress of the Goal's Key Results, of the Goals supporting it, or of both, depending on the Goal's setup. Read-only.","example":0.63},"confidence_level":{"type":"integer","minimum":1,"maximum":10,"description":"How likely the Goal is to be achieved, from 1 to 10: 1-3 off track, 4-6 at risk, 7-10 on track. Derived from the confidence levels of the Goal's Key Results (their average, unless the account is configured otherwise). Read-only.","example":8},"start_date":{"type":"string","format":"date","description":"Start date of the Goal in ISO 8601 format.","example":"2026-01-01"},"target_date":{"type":"string","format":"date","description":"Target completion date of the Goal in ISO 8601 format.","example":"2026-03-31"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the Goal was created in ISO 8601 format.","example":"2025-12-15T10:30:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the Goal was last updated in ISO 8601 format.","example":"2026-01-20T14:45:00Z"},"workpath_url":{"type":"string","format":"uri","description":"URL to view the Goal in the Workpath platform.","example":"https://acme.workpath.com/goals/42"},"owners":{"description":"The one user accountable for the Goal, plus the team, Business Unit or organization the Goal belongs to.","$ref":"#/components/schemas/Owners"},"collaborators":{"description":"Users and teams working on the Goal together with its owners. In Workpath, collaborators can update the Goal's Key Results and Initiatives.","$ref":"#/components/schemas/Collaborators"},"followers":{"description":"Users and teams that follow the Goal to stay informed, without working on it.","$ref":"#/components/schemas/Collaborators"},"labels":{"type":"array","description":"Labels attached to the Goal for categorization.","items":{"$ref":"#/components/schemas/Label"}},"cycles":{"type":"array","description":"Planning cycles the Goal belongs to: every cycle whose dates overlap the Goal's `start_date` to `target_date`. Read-only.","items":{"$ref":"#/components/schemas/CycleReference"}},"key_results":{"type":"array","description":"Key Results associated with the Goal.","items":{"$ref":"#/components/schemas/KeyResult"}},"supports":{"description":"Entities that this Goal supports (contributes to).\nOmitted if there are no outgoing alignments.\n","$ref":"#/components/schemas/Alignments"},"supported_by":{"description":"Entities that support this Goal.\nOmitted if there are no incoming alignments.\n","$ref":"#/components/schemas/Alignments"}},"examples":[{"id":42,"title":"Successfully implement the strategic operating model across the organization","description":"Establish a consistent approach to strategy execution by rolling out OKRs company-wide, ensuring alignment from leadership priorities down to team-level goals.","draft":false,"progress":0.63,"confidence_level":8,"start_date":"2026-01-01","target_date":"2026-03-31","created_at":"2025-12-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","workpath_url":"https://acme.workpath.com/goals/42","owners":{"teams":[{"id":4,"name":"Strategy Office"}],"users":[{"id":5,"name":"Thomas Weber"}]},"collaborators":{"teams":[{"id":6,"name":"People \u0026 Culture"}],"users":[{"id":8,"name":"Elena Fischer"}]},"followers":{"users":[{"id":14,"name":"Jonas Becker"}]},"labels":[{"id":2,"title":"Strategic Initiative"}],"cycles":[{"id":9,"title":"Q1 2026"}],"key_results":[{"id":11,"title":"Strategic priorities defined and documented","description":"Complete the process of defining, documenting, and communicating company-wide strategic priorities.","progress":0.5,"confidence_level":9,"type":"milestone","current_value":1,"start_value":0,"target_value":2,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=11","owners":{"users":[{"id":5,"name":"Thomas Weber"}]},"milestones":[{"done":true,"title":"Strategic priorities approved by leadership team"},{"done":false,"title":"Priorities communicated to all teams via town hall"}],"supported_by":{"goals":[{"id":63,"title":"Every business unit publishes its strategic priorities"}]}},{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}},{"id":13,"title":"Goals are vertically aligned to company priorities","description":"Percentage of team goals that have a clear line-of-sight to strategic priorities.","progress":0.68,"confidence_level":7,"type":"percental","current_value":68,"start_value":0,"target_value":100,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=13","owners":{"teams":[{"id":4,"name":"Strategy Office"}]},"supported_by":{"initiatives":[{"id":9,"title":"Conduct quarterly alignment reviews across all teams"}]}},{"id":14,"title":"Training budget invested in OKR enablement","description":"Investment in coaching, workshops, and tooling to support the operating model rollout.","progress":0.65,"confidence_level":7,"type":"monetary","current_value":32500,"start_value":0,"target_value":50000,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=14","owners":{"teams":[{"id":6,"name":"People \u0026 Culture"}]},"currency":"EUR","supported_by":{"initiatives":[{"id":15,"title":"OKR coaching certification program"}]}}],"supports":{"goals":[{"id":100,"title":"Become a strategy-led organization with clear priorities and measurable outcomes"}],"kpis":[{"id":15,"title":"Time to Market for Strategic Initiatives"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"}]}}]},"GoalCreateRequestbody":{"title":"Goal Create Request","type":"object","description":"Request body for creating a new Goal.\n\n**Required:** `title`, `owners`, `start_date`, `target_date`\n\n**Ownership requirements:**\n- Exactly one user owner is required\n- Exactly one organizational owner (team, business_unit, or organization) is required\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n`id`, `progress`, `confidence_level`, `cycles`, `supported_by`, `created_at`, `updated_at`, `workpath_url`\n","required":["title","owners","start_date","target_date"],"properties":{"title":{"type":"string","minLength":1,"description":"Title of the Goal.","example":"Increase customer satisfaction"},"description":{"type":["string","null"],"description":"Detailed description of the Goal.","example":"Focus on improving NPS scores and reducing churn through better support."},"draft":{"type":"boolean","default":false,"description":"Whether the Goal is a draft. Defaults to false.","example":false},"start_date":{"type":"string","format":"date","description":"Start date of the Goal in ISO 8601 format.","example":"2025-01-01"},"target_date":{"type":"string","format":"date","description":"Target completion date of the Goal in ISO 8601 format.","example":"2025-03-31"},"owners":{"description":"Ownership specification.\n**Required:** Exactly one user AND exactly one organizational owner (team, business_unit, or organization).\n\nExample: `{ \"users\": [{ \"id\": 123 }], \"teams\": [{ \"id\": 456 }] }`\n","$ref":"#/components/schemas/OwnersRequest"},"labels":{"type":"array","description":"Labels to attach to the Goal. Only the `id` field is used.\nExample: `[{ \"id\": 10 }]`\n","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"supports":{"description":"Alignments to create. Only the `id` field is used, and only `strategic_elements`, `kpis` and `initiatives` are accepted.\nExample: `{ \"strategic_elements\": [{ \"id\": 3 }], \"kpis\": [{ \"id\": 5 }] }`\n","$ref":"#/components/schemas/AlignmentsRequest"}}},"GoalUpdate":{"title":"Goal Status Update","type":"object","description":"A single status update on a Goal.","properties":{"id":{"type":"integer","readOnly":true,"example":321},"created_at":{"type":"string","format":"date-time","readOnly":true,"example":"2026-03-15T10:30:00Z","description":"When the update was submitted."},"progress":{"type":["number","null"],"minimum":0,"maximum":1,"readOnly":true,"example":0.45,"description":"Progress (0–1) at the time of this update. Matches the `progress` field on `GET /goals/{id}`. Null when no explicit value was set."},"confidence_level":{"type":"integer","minimum":1,"maximum":10,"readOnly":true,"example":7,"description":"Confidence level at the time of this update (1–10). Matches the `confidence_level` field on `GET /goals/{id}`."},"author":{"type":"object","readOnly":true,"description":"The user who submitted the update.","properties":{"id":{"type":"integer","example":456},"name":{"type":"string","example":"Jane Doe"}},"required":["id","name"]}},"required":["id","created_at","confidence_level","author"]},"GoalUpdateRequestbody":{"title":"Goal Update Request","type":"object","description":"Request body for updating an existing Goal. All fields are optional.\n\n**Partial update semantics:** For scalar fields (title, description, draft, dates),\nonly provided fields are updated. Missing fields retain their current values.\n\n**Replacement semantics for compound properties:**\n- `owners`: If provided, **replaces ALL** existing owners. Must still satisfy ownership requirements.\n- `labels`: If provided, **replaces ALL** existing labels. Use `[]` to clear labels.\n- `supports`: If provided, **replaces ALL** existing alignments.\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n`id`, `progress`, `confidence_level`, `cycles`, `supported_by`, `created_at`, `updated_at`, `workpath_url`\n","properties":{"title":{"type":"string","minLength":1,"description":"Title of the Goal.","example":"Updated goal title"},"description":{"type":["string","null"],"description":"Description of the Goal. Set to null to clear.","example":"Updated description for the Goal."},"draft":{"type":"boolean","description":"Whether the Goal is a draft.","example":false},"start_date":{"type":"string","format":"date","description":"Start date of the Goal.","example":"2025-01-01"},"target_date":{"type":"string","format":"date","description":"Target completion date of the Goal.","example":"2025-06-30"},"owners":{"description":"Ownership specification. If provided, **replaces ALL** existing owners.\nMust still have exactly one user AND exactly one organizational owner.\n","$ref":"#/components/schemas/OwnersRequest"},"labels":{"type":"array","description":"Labels to attach. If provided, **replaces ALL** existing labels.\nUse an empty array `[]` to clear all labels.\n","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"supports":{"description":"Alignments. If provided, **replaces ALL** existing alignments.\nOnly `strategic_elements`, `kpis` and `initiatives` are accepted. Use `{}` to clear all alignments.\n","$ref":"#/components/schemas/AlignmentsRequest"}}},"Initiative":{"title":"Initiative","type":"object","description":"An Initiative is a project or piece of work that moves Goals and Key Results forward, for example \"Roll out OKR training program to all teams\".\n\n**Ownership:**\n- One organizational owner (team, Business Unit, or organization) plus optionally one user.\n- Empty owner arrays are omitted from the response.\n\n**Alignments:**\n- `supports` shows what Strategic Elements, Goals, Key Results, Initiatives, or KPIs this Initiative contributes to.\n- `supported_by` shows what Strategic Elements, KPIs, Goals or Initiatives support this Initiative.\n- Empty alignment arrays and empty objects are omitted from the response.\n","required":["id","title","description","status","progress","start_date","target_date","external_id","created_at","updated_at","workpath_url","owners"],"properties":{"id":{"type":"integer","description":"Unique identifier for the Initiative.","example":3},"title":{"type":"string","description":"Title of the Initiative.","example":"Raise brand awareness among target group"},"description":{"type":["string","null"],"description":"Detailed description of the Initiative.","example":"Tasks you need to perform in order to generate progress on your key results."},"status":{"type":"string","enum":["not_started","in_progress","in_danger","done","failed"],"description":"Current status of the Initiative:\n- `not_started`: Work has not begun\n- `in_progress`: Work is underway\n- `in_danger`: Delivery is at risk\n- `done`: Successfully completed\n- `failed`: Did not complete successfully\n","example":"in_progress"},"progress":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Overall progress of the Initiative, expressed as a decimal between 0 and 1. `null` when progress tracking is disabled on the Initiative; `0` when tracking is enabled but no progress update has set a value yet.","example":0.65},"start_date":{"type":["string","null"],"format":"date","description":"Planned start date of the Initiative in ISO 8601 format.","example":"2026-01-01"},"target_date":{"type":["string","null"],"format":"date","description":"Target completion date of the Initiative in ISO 8601 format.","example":"2026-03-31"},"external_id":{"type":["string","null"],"description":"Identifier of the same item in another system, for example a Jira issue key. Workpath stores it without interpreting it, so you can match Initiatives to records in your own tools.","example":"a1b2c3d4"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the Initiative was created in ISO 8601 format.","example":"2026-01-15T10:30:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the Initiative was last updated in ISO 8601 format.","example":"2026-02-20T14:45:00Z"},"workpath_url":{"type":"string","format":"uri","description":"URL to view the Initiative in the Workpath platform.","example":"https://acme.workpath.com/initiatives/3"},"owners":{"description":"Ownership information for the Initiative. Empty arrays are omitted.\n","$ref":"#/components/schemas/Owners"},"supports":{"description":"Entities that this Initiative supports (contributes to).\nOmitted if there are no outgoing alignments.\n","$ref":"#/components/schemas/Alignments"},"supported_by":{"description":"Entities that support this Initiative.\nOmitted if there are no incoming alignments.\n","$ref":"#/components/schemas/Alignments"},"confidence_level":{"type":["integer","null"],"description":"Confidence level of the Initiative (1-10). `null` when nobody has set one. Independent of progress tracking, so it is returned even when progress is disabled.","minimum":1,"maximum":10,"example":7}},"examples":[{"id":7,"title":"Roll out OKR training program to all teams","description":"Train every team lead in writing and reviewing OKRs before the Q2 planning cycle.","status":"in_progress","progress":0.4,"confidence_level":7,"start_date":"2026-01-01","target_date":"2026-03-31","external_id":"a1b2c3d4","created_at":"2026-01-15T10:30:00Z","updated_at":"2026-02-20T14:45:00Z","workpath_url":"https://acme.workpath.com/initiatives/7","owners":{"users":[{"id":8,"name":"Elena Fischer"}],"teams":[{"id":6,"name":"People \u0026 Culture"}]},"supports":{"goals":[{"id":42,"title":"Successfully implement the strategic operating model across the organization"}],"key_results":[{"id":12,"title":"Teams have drafted their quarterly goals"}]}}]},"InitiativeCreateRequestbody":{"title":"Initiative Create Request","type":"object","description":"Request body for creating a new Initiative.\n\n**Required:** `title`, `owners` (with one organizational owner)\n\n**Optional:** `description`, `status`, `start_date`, `target_date`, `external_id`, `confidence_level`, `owners.users`, `supports`\n","required":["title","owners"],"properties":{"title":{"type":"string","minLength":1,"description":"Title of the Initiative.","example":"Raise brand awareness among target group"},"description":{"type":["string","null"],"description":"Detailed description of the Initiative.","example":"Tasks you need to perform in order to generate progress on your key results."},"status":{"type":"string","enum":["not_started","in_progress","in_danger","done","failed"],"default":"not_started","description":"Current status of the Initiative. Defaults to `not_started` if not provided.\n","example":"not_started"},"start_date":{"type":"string","format":"date","description":"Planned start date in ISO 8601 format.","example":"2026-01-01"},"target_date":{"type":"string","format":"date","description":"Target completion date in ISO 8601 format.","example":"2026-03-31"},"external_id":{"type":"string","description":"External system identifier for integration purposes.","example":"a1b2c3d4"},"owners":{"description":"Ownership specification. Example: `{ \"teams\": [{ \"id\": 4 }] }` or `{ \"users\": [{ \"id\": 5 }], \"business_units\": [{ \"id\": 1 }] }`\n","$ref":"#/components/schemas/OwnersRequest"},"supports":{"description":"Alignments to create. Only the `id` field is used; other fields are ignored.\n\nExample: `{ \"goals\": [{ \"id\": 1 }], \"key_results\": [{ \"id\": 12 }] }`\n","$ref":"#/components/schemas/AlignmentsRequest"},"confidence_level":{"type":["integer","null"],"minimum":1,"maximum":10,"description":"Confidence level (1-10) of reaching the Initiative's Goal. Send `null` to clear it.","example":7}}},"InitiativeUpdate":{"title":"Initiative Status Update","type":"object","description":"A single status update on an Initiative.","properties":{"id":{"type":"integer","readOnly":true,"example":789},"created_at":{"type":"string","format":"date-time","readOnly":true,"example":"2026-03-20T09:00:00Z","description":"When the update was submitted."},"status":{"type":"string","enum":["not_started","in_progress","in_danger","done","failed"],"readOnly":true,"example":"in_progress","description":"Status of the Initiative at the time of this update. Matches the `status` field on `GET /initiatives/{id}`."},"progress":{"type":["number","null"],"minimum":0,"maximum":1,"readOnly":true,"example":0.65,"description":"Progress (0–1) at the time of this update. Matches the `progress` field on `GET /initiatives/{id}`. Null when no explicit value was set or progress tracking is disabled on the Initiative."},"comment":{"type":["string","null"],"readOnly":true,"example":"Unblocked after vendor call.","description":"Optional free-text comment left by the author."},"author":{"type":"object","readOnly":true,"description":"The user who submitted the update.","properties":{"id":{"type":"integer","example":456},"name":{"type":"string","example":"Jane Doe"}},"required":["id","name"]},"confidence_level":{"type":["integer","null"],"minimum":1,"maximum":10,"description":"Confidence level (1-10) recorded at the time of the update. Returned raw rather than normalised, and unaffected by whether progress tracking is enabled. `null` when no confidence level was set.","readOnly":true,"example":7}},"required":["id","created_at","status","author"]},"InitiativeUpdateRequestbody":{"title":"Initiative Update Request","type":"object","description":"Request body for updating an existing Initiative.\n\nAll fields are optional. Only include fields you want to change.\n\n**Supports replacement semantics:** When `supports` is included, it replaces all existing alignments\n(not additive). To add an alignment, include all existing alignments plus the new one. To remove an alignment,\ninclude all existing alignments minus the one to remove. To clear all alignments, send `supports: {}`.\n","properties":{"title":{"type":"string","minLength":1,"description":"Title of the Initiative.","example":"Updated initiative title"},"description":{"type":["string","null"],"description":"Detailed description. Send `null` to clear.","example":"Updated description text."},"status":{"type":"string","enum":["not_started","in_progress","in_danger","done","failed"],"description":"Current status of the Initiative.","example":"in_progress"},"start_date":{"type":["string","null"],"format":"date","description":"Planned start date in ISO 8601 format. Send `null` to clear.","example":"2026-01-15"},"target_date":{"type":["string","null"],"format":"date","description":"Target completion date in ISO 8601 format. Send `null` to clear.","example":"2026-04-15"},"external_id":{"type":["string","null"],"description":"External system identifier. Send `null` to clear.","example":"e5f6g7h8"},"owners":{"description":"Update ownership. Replaces current ownership when provided.\n","$ref":"#/components/schemas/OwnersRequest"},"supports":{"description":"Replace all alignments. This is not additive - the provided alignments replace all existing alignments.\n\n- To add an alignment: include all existing alignments plus the new one\n- To remove an alignment: include all existing alignments minus the one to remove\n- To clear all alignments: send `supports: {}`\n","$ref":"#/components/schemas/AlignmentsRequest"},"confidence_level":{"type":["integer","null"],"minimum":1,"maximum":10,"description":"Confidence level (1-10) of reaching the Initiative's Goal. Send `null` to clear it.","example":7}}},"KeyResult":{"title":"Key Result","type":"object","description":"A Key Result is a measurable result that shows whether its Goal is achieved, for example \"Customer satisfaction rises from 7.2 to 8.5\".\n\n**Ownership:** Key Results can be owned by one user OR one team, never both, and never a Business Unit or organization.\n\n**Type-specific fields:**\n- `currency` is only present for Key Results of type `monetary`\n- `milestones` is only present for Key Results of type `milestone`\n\n**Alignments:**\n- `supports` lists automated Key Results that derive their value from this Key Result.\n- `supported_by` lists the Initiatives and Goals that contribute to this Key Result, and, for an automated Key Result, the Key Results it derives its value from.\n- Empty alignment arrays and empty objects are omitted from the response.\n","required":["id","title","description","progress","confidence_level","type","current_value","start_value","target_value","owners","workpath_url"],"properties":{"id":{"type":"integer","description":"Unique identifier for the Key Result.","example":12},"title":{"type":"string","description":"Title of the Key Result.","example":"Teams have drafted their quarterly goals"},"description":{"type":["string","null"],"description":"Detailed description of the Key Result.","example":"Track how many teams have created and published their Q1 goals in Workpath."},"progress":{"type":"number","description":"Progress towards the Key Result, expressed as a decimal (e.g., 0.72 = 72%). Can exceed the 0-1 range when overachieving (\u003e1) or in edge cases (\u003c0).","example":0.72},"confidence_level":{"type":"integer","minimum":1,"maximum":10,"description":"The owner's confidence of reaching the target in time, from 1 to 10: 1-3 off track, 4-6 at risk, 7-10 on track. Recorded with every status update.","example":8},"type":{"type":"string","enum":["numeric","percental","monetary","milestone","contributing_goal"],"description":"How the Key Result is measured: `numeric` (a number, e.g. customers won), `percental` (a percentage), `monetary` (an amount in `currency`) or `milestone` (a list of `milestones` that are done or not). `contributing_goal` Key Results take their progress from a supporting Goal and cannot be created through the API.","example":"numeric"},"current_value":{"type":"number","description":"The latest recorded value.","example":18},"start_value":{"type":"number","description":"The baseline the Key Result started from.","example":0},"target_value":{"type":"number","description":"The value to reach by the end of the Goal.","example":25},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 currency code. Only present for Key Results of type `monetary`.","example":"EUR"},"milestones":{"type":"array","description":"List of milestones. Only present for Key Results of type `milestone`.","items":{"$ref":"#/components/schemas/Milestone"}},"owners":{"description":"Ownership information. Empty object `{}` if the Key Result has no owner assigned.","$ref":"#/components/schemas/KeyResultOwners"},"workpath_url":{"type":"string","format":"uri","description":"URL to view the Key Result in the Workpath platform.","example":"https://acme.workpath.com/goals/1?openKeyResultDetailsId=12"},"supports":{"description":"Automated Key Results that are derived from this one and roll up its progress.\nKey Results can't support other entity types. Omitted if there are none.\n","$ref":"#/components/schemas/Alignments"},"supported_by":{"description":"Initiatives and Goals that contribute to this Key Result, and, for an automated Key Result, the Key Results\nit is derived from. Omitted if there are none.\n","$ref":"#/components/schemas/Alignments"}},"examples":[{"id":12,"title":"Teams have drafted their quarterly goals","description":"Track how many teams have created and published their Q1 goals in Workpath.","progress":0.72,"confidence_level":8,"type":"numeric","current_value":18,"start_value":0,"target_value":25,"workpath_url":"https://acme.workpath.com/goals/42?openKeyResultDetailsId=12","owners":{"users":[{"id":3,"name":"Maria Schmidt"}]},"supported_by":{"initiatives":[{"id":7,"title":"Roll out OKR training program to all teams"},{"id":14,"title":"Host weekly OKR office hours for team leads"}],"key_results":[{"id":31,"title":"Sales teams have drafted their quarterly goals"},{"id":32,"title":"Engineering teams have drafted their quarterly goals"}]}}]},"KeyresultCreateRequestbody":{"title":"Key Result Create Request","type":"object","description":"Request body for creating a new Key Result.\n\n**Required:** `title`\n\n**Defaults:**\n- `type`: percental\n- `confidence_level`: 10 (can be customized via account-level setting)\n- `start_value`: 0\n- `target_value`: 100 (for percental), 0 (for others)\n- `current_value`: equals start_value\n\n**Type-specific requirements:**\n- `monetary`: Requires `currency` field (one of `EUR`, `USD`, `GBP`, `JPY`, `RUB`, `CHF`, `NOK`, `CNY`)\n- `milestone`: Requires `milestones` array with at least one milestone\n\n**Owner inheritance:** If `owners` is not provided, the Key Result is owned by the parent Goal's owning user.\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n`id`, `progress`, `workpath_url`, `supports`, `supported_by`\n","required":["title"],"properties":{"title":{"type":"string","minLength":1,"description":"Title of the Key Result.","example":"Increase conversion rate to 5%"},"description":{"type":["string","null"],"description":"Detailed description of the Key Result.","example":"Track the conversion rate from trial to paid customers."},"type":{"type":"string","enum":["numeric","percental","monetary","milestone"],"default":"percental","description":"Type of Key Result. Determines how progress is measured.\n- `percental`: Progress measured as percentage (0-100)\n- `numeric`: Progress measured as a number\n- `monetary`: Progress measured in currency\n- `milestone`: Progress measured by completing milestones\n","example":"percental"},"confidence_level":{"type":"integer","minimum":1,"maximum":10,"description":"Confidence level (1-10) indicating likelihood of achieving the target. Defaults to the organization's default confidence level.\n- 1-3: Off track\n- 4-6: At risk\n- 7-10: On track\n","example":10},"current_value":{"type":"number","description":"Current progress value. Defaults to start_value if not provided.","example":0},"start_value":{"type":"number","default":0,"description":"Starting value for progress calculation.","example":0},"target_value":{"type":"number","description":"Target value to achieve. Defaults to 100 for percental, 0 for others.","example":100},"currency":{"type":"string","enum":["EUR","USD","GBP","JPY","RUB","CHF","NOK","CNY"],"description":"ISO 4217 currency code.\n**Required** when type is \"monetary\".\n","example":"EUR"},"milestones":{"type":"array","description":"Milestones for milestone-type Key Results.\n**Required** when type is \"milestone\".\n","items":{"$ref":"#/components/schemas/MilestoneInput"}},"owners":{"description":"Ownership specification. If not provided, inherits from parent Goal.\nKey Results can be owned by users OR teams (not both simultaneously).\n","$ref":"#/components/schemas/KeyResultOwnersRequest"}}},"KeyResultOwners":{"title":"Key Result Owners","type":"object","description":"Owner of a Key Result: a single user or a single team. Empty object if the Key Result has no owner.","properties":{"users":{"type":"array","description":"User owner.","items":{"$ref":"#/components/schemas/UserReference"}},"teams":{"type":"array","description":"Team owner.","items":{"$ref":"#/components/schemas/TeamReference"}}}},"KeyResultOwnersRequest":{"title":"Key Result Owners Request","type":"object","description":"Ownership specification for Key Result create/update request bodies.\n\nKey Results can be owned by users OR teams (not both user and team together).\nIf not specified on create, ownership is inherited from the parent Goal.\n\nOnly the `id` field is required for each owner reference; names are ignored.\n","properties":{"users":{"type":"array","description":"User owners (zero or one).","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"teams":{"type":"array","description":"Team owners (zero or one).","items":{"$ref":"#/components/schemas/AlignmentIdReference"}}}},"KeyResultUpdate":{"title":"Key Result Status Update","type":"object","description":"A single status update on a Key Result.","properties":{"id":{"type":"integer","readOnly":true,"example":123},"created_at":{"type":"string","format":"date-time","readOnly":true,"example":"2026-03-15T10:30:00Z","description":"When the update was submitted. Full timestamp (not a bare date) because multiple updates can occur on the same day."},"value":{"type":"number","readOnly":true,"example":42.5,"description":"The numeric value of the Key Result at the time of this update."},"progress":{"type":"number","readOnly":true,"example":0.45,"description":"Progress of the Key Result at the time of this update, as a fraction toward the target (1.0 = target reached). May exceed 1 on overachievement or be negative when the value is below the start. Matches the `progress` field on `GET /key_results/{id}`."},"confidence_level":{"type":"integer","minimum":1,"maximum":10,"readOnly":true,"example":7,"description":"Confidence level at the time of this update (1–10). Matches the `confidence_level` field on `GET /key_results/{id}`."},"comment":{"type":["string","null"],"readOnly":true,"example":"Good week, velocity picked up.","description":"Optional free-text comment left by the author."},"author":{"type":"object","readOnly":true,"description":"The user who submitted the update.","properties":{"id":{"type":"integer","example":456},"name":{"type":"string","example":"Jane Doe"}},"required":["id","name"]}},"required":["id","created_at","value","progress","confidence_level","author"]},"KeyresultFullupdateRequestbody":{"title":"Key Result Update Request","type":"object","description":"Request body for fully updating a Key Result. All fields are optional.\n\n**Updatable fields:**\n- `confidence_level`, `current_value`, `start_value`, `target_value`\n- `title`, `description`: Update text fields\n- `milestones`: For milestone type, replaces ALL existing milestones\n- `owners`: Replaces ALL existing owners\n\n**Status update trigger:** A status update is automatically generated when the update changes the Key Result's\n`progress` or `confidence_level`, whether through `current_value`, `start_value`, `target_value` or `milestones`.\n\n**Type restrictions:**\n- Milestone Key Results: Use `milestones` array (not current_value/target_value)\n- The Key Result `type` cannot be changed after creation\n\n**Read-only properties rejected:** The following will result in a 422 error if provided:\n`id`, `progress`, `workpath_url`, `supports`, `supported_by`, `type`\n","properties":{"title":{"type":"string","minLength":1,"description":"Title of the Key Result.","example":"Updated Key Result title"},"description":{"type":["string","null"],"description":"Description of the Key Result. Set to null to clear.","example":"Updated description for the Key Result."},"confidence_level":{"type":"integer","minimum":1,"maximum":10,"description":"Confidence level (1-10) indicating likelihood of achieving the target.\n- 1-3: Off track\n- 4-6: At risk\n- 7-10: On track\n","example":8},"current_value":{"type":"number","description":"Current progress value.","example":75},"start_value":{"type":"number","description":"Starting value for progress calculation.","example":0},"target_value":{"type":"number","description":"Target value to achieve.","example":100},"milestones":{"type":"array","description":"Milestones for milestone-type Key Results.\nIf provided, **replaces ALL** existing milestones.\n","items":{"$ref":"#/components/schemas/MilestoneInput"}},"owners":{"description":"Ownership specification. If provided, **replaces ALL** existing owners.\n","$ref":"#/components/schemas/KeyResultOwnersRequest"}}},"KPI":{"title":"KPI","type":"object","description":"A KPI (Key Performance Indicator) is an ongoing business metric of an organization, Business Unit or team, such as revenue, churn or active users.\n\n**Alignments:**\n- `supports` shows what Strategic Elements, Goals, Initiatives, or KPIs this KPI contributes to.\n- `supported_by` shows what Strategic Elements, Goals, Initiatives, or KPIs support this KPI.\n- Empty alignment arrays and empty objects are omitted from the response.\n","properties":{"id":{"type":"integer","example":10,"description":"Unique identifier for the KPI.","readOnly":true},"title":{"type":"string","example":"Product Users: Quarterly Active Users Growth Rate.","description":"Concise, descriptive name of the KPI that highlights its primary focus or measurement."},"kind":{"type":"string","enum":["organization","team","business_unit"],"description":"Whether the KPI belongs to the whole organization (`organization`), a Business Unit (`business_unit`) or a team (`team`).","example":"team"},"description":{"type":"string","example":"Users that were online within the last 90 days, year over year.","description":"A brief explanation of the KPI, providing context and relevance to its purpose or measurement."},"external_id":{"type":["string","null"],"description":"External system identifier for integration purposes.","example":"KPI-QAU-001"},"decimal_places":{"type":["integer","null"],"description":"Number of decimal places the KPI value is shown with (0-10). `null` uses the default.","example":2},"team":{"type":"object","description":"Information about team when KPI is of kind `team`.","required":["id","name"],"properties":{"id":{"type":"integer","description":"Team ID."},"name":{"type":"string","description":"Team name."}}},"business_unit":{"type":"object","description":"Business Unit information when KPI is of kind `business_unit`.","required":["id","name"],"properties":{"id":{"type":"integer","description":"Business Unit ID."},"name":{"type":"string","description":"Business Unit name."}}},"type":{"type":"object","description":"Specifies the type of metric used by the KPI, which can be `percental`, `numeric` or `monetary`. Contains additional details like currency if applicable.","properties":{"name":{"type":"string","enum":["monetary","percental","numeric"],"description":"The category of the metric, which can be percental, numeric, or monetary."},"currency":{"type":["string","null"],"example":"EUR","maxLength":3,"minLength":3,"description":"ISO 4217 currency code (e.g., \"USD\", \"EUR\"). This field is only populated if the name is \"monetary\"."}}},"target_type":{"type":"string","enum":["above","below"],"description":"Whether higher values are better (`above`: the aim is to reach or exceed the target) or lower values are better (`below`: the aim is to stay at or under the target)."},"current_actual":{"oneOf":[{"$ref":"#/components/schemas/KpiActualValue"},{"type":"null"}],"description":"The most recent actual value up to today, with the KPI's current status and summary. `null` if there is none.","example":{"value":15.12,"date":"2026-03-01","status":"On Track","summary":"All looking good so far.","status_color":"success"}},"current_target":{"oneOf":[{"$ref":"#/components/schemas/KpiTargetValue"},{"type":"null"}],"description":"The target that currently applies, usually the next upcoming one. `null` if there is none.","example":{"value":40,"date":"2026-06-30"}},"current_forecast":{"oneOf":[{"$ref":"#/components/schemas/KpiForecastValue"},{"type":"null"}],"description":"The next upcoming forecast. `null` if there is none.","example":{"value":42.43,"date":"2026-06-30"}},"supports":{"description":"Entities that this KPI supports (contributes to).\nOmitted if there are no outgoing alignments.\n","$ref":"#/components/schemas/Alignments"},"supported_by":{"description":"Entities that support this KPI.\nOmitted if there are no incoming alignments.\n","$ref":"#/components/schemas/Alignments"},"workpath_url":{"type":"string","format":"uri","description":"URL to view the KPI in the Workpath platform.","example":"https://acme.workpath.com/goals/overview/teams/23?selectedKpiId=10#kpis"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the KPI was created in ISO 8601 format.","example":"2025-06-15T10:30:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the KPI was last updated in ISO 8601 format.","example":"2025-09-01T14:20:00Z"},"owners":{"description":"Ownership information. Empty arrays are omitted.","$ref":"#/components/schemas/Owners"}},"examples":[{"id":10,"title":"Product Users: Quarterly Active Users Growth Rate.","description":"Users that were online within the last 90 days, year over year.","kind":"team","target_type":"above","external_id":"KPI-QAU-001","decimal_places":2,"created_at":"2025-06-15T10:30:00Z","updated_at":"2026-03-02T09:15:00Z","workpath_url":"https://acme.workpath.com/goals/overview/teams/23?selectedKpiId=10#kpis","type":{"name":"percental"},"team":{"id":23,"name":"Product Growth"},"owners":{"teams":[{"id":23,"name":"Product Growth"}]},"current_actual":{"value":15.12,"date":"2026-03-01","status":"On Track","summary":"All looking good so far.","status_color":"success"},"current_target":{"value":40,"date":"2026-06-30"},"current_forecast":{"value":42.43,"date":"2026-06-30"},"supports":{"kpis":[{"id":8,"title":"Annual Recurring Revenue (ARR)"}]},"supported_by":{"goals":[{"id":55,"title":"Grow our user base by 50% this year"}],"initiatives":[{"id":12,"title":"Launch referral program for existing users"}]}}]},"KpiActualValue":{"title":"KPI Actual Value","type":"object","description":"A measured value of the KPI, with the KPI's current status and summary.","examples":[{"value":15,"date":"2024-09-01","status":"string","summary":"string","status_color":"success"}],"required":["value","date","status"],"properties":{"value":{"type":"number","description":"A numerical representation of the actual value of the KPI, observed on a certain date.","example":15},"date":{"type":"string","description":"The date the value was measured for. A KPI has at most one actual per date.","example":"2024-09-01","format":"date"},"status":{"type":"string","description":"The KPI's current (most recent) status, such as On Track, not the status at this actual's date. The available statuses are defined per account."},"summary":{"type":["string","null"],"description":"Why the KPI is where it is, in the owner's words. Like `status`, this is the KPI's most recent summary.","example":"All looking good so far."},"status_color":{"type":"string","enum":["success","warning","danger","default"],"description":"The color of the status: `success`, `warning`, `danger` or `default`."}}},"KpiActualsCreateRequestbody":{"title":"KPI Actuals Request","type":"object","description":"This model represents the request body for creating the actual value, status and status summary of a specific KPI.","required":["value","date"],"properties":{"value":{"type":"number","description":"A numerical representation of the actual performance observed at the specified date.","example":1.5},"summary":{"type":"string","description":"A textual summary describing the performance or providing context about the actual value.","example":"A brief description providing context about the KPI's current performance or recent changes."},"status":{"type":"string","description":"A string indicating the performance status relative to the target. It corresponds to one of the following values: “On Track”, “At Risk”, “Off Track”, “No Status”.","example":"On Track"},"date":{"type":"string","description":"The date of the recorded actual value.","format":"date"},"status_color":{"type":"string","enum":["success","warning","danger","default"]}},"examples":[{"value":1.5,"summary":"A brief description providing context about the KPI's current performance or recent changes.","status":"On Track","date":"2019-08-24","status_color":"success"}]},"KpiForecastValue":{"title":"KPI Forecast Value","type":"object","description":"A value the KPI is expected to have at `date`.","required":["value","date"],"properties":{"value":{"type":"number","description":"A numerical prediction of what the KPI actual is expected to be at a certain date."},"date":{"type":"string","description":"The date the forecast is for. A KPI has at most one forecast per date.","format":"date"}},"examples":[{"value":0,"date":"2019-08-24"}]},"KpiForecastsCreateRequestbody":{"title":"KPI Forecasts Request","type":"object","description":"This model represents the request body for creating the forecast value of a specific KPI.","required":["value","date"],"properties":{"value":{"type":"number","description":"A numerical representation of the forecast performance observed at the specified date.","example":1.5},"date":{"type":"string","description":"The date of the recorded forecast value.","format":"date"}},"examples":[{"value":1.5,"date":"2019-08-24"}]},"KpiTargetValue":{"title":"KPI Target Value","type":"object","description":"A value the KPI should reach by `date`.","required":["value","date"],"properties":{"value":{"type":"number","description":"A numerical goal for the KPI to achieve by the accompanying date.\n","example":40},"date":{"type":"string","description":"The date by which the target should be reached. A KPI has at most one target per date.","example":"2024-11-20","format":"date"}},"examples":[{"value":40,"date":"2024-11-20"}]},"KpiTargetCreateRequestbody":{"title":"KPI Targets Request","type":"object","description":"This model represents the request body for creating the target value of a specific KPI.","required":["value","date"],"properties":{"value":{"type":"number","description":"A numerical representation of the target performance observed at the specified date.","example":1.5},"date":{"type":"string","description":"The date of the recorded target value.","format":"date"}},"examples":[{"value":1.5,"date":"2019-08-24"}]},"KpiValues":{"title":"KPI Values","type":"object","description":"Represents Actual, Target and Forecast values for a KPI.","required":["actuals","targets","forecasts"],"properties":{"actuals":{"type":"array","items":{"$ref":"#/components/schemas/KpiActualValue"}},"targets":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/KpiTargetValue"}},"forecasts":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/KpiForecastValue"}}},"examples":[{"actuals":[{"value":15,"date":"2024-09-01","status":"string","summary":"string","status_color":"success"}],"targets":[{"value":40,"date":"2024-11-20"}],"forecasts":[{"date":"2019-08-24","value":100}]}]},"KpiValuesCreateRequestbody":{"title":"KPI Values Request","type":"object","description":"This model represents the request body for creating actuals, targets and forecasts performance values of a specific KPI.","properties":{"actuals":{"type":"array","description":"An array of objects representing the current performance metrics related to the indicator.","items":{"type":"object","$ref":"#/components/schemas/KpiActualsCreateRequestbody"}},"targets":{"type":"array","description":"An array of objects detailing the target performance of the KPI, including target values and deadlines.","items":{"type":"object","$ref":"#/components/schemas/KpiTargetCreateRequestbody"}},"forecasts":{"type":"array","description":"An array of objects detailing the forecasted performance of the KPI, including predicted values and relevant dates.","items":{"type":"object","$ref":"#/components/schemas/KpiForecastsCreateRequestbody"}}},"examples":[{"actuals":[{"value":15.12,"date":"2026-03-01","summary":"Growth picked up after the referral program launch.","status":"On Track"}],"targets":[{"value":40,"date":"2026-06-30","target_type":"above"}],"forecasts":[{"value":42.43,"date":"2026-06-30"}]}]},"Label":{"title":"Label","type":"object","description":"A label that can be attached to Goals for categorization.","required":["id","title"],"properties":{"id":{"type":"integer","description":"Unique identifier for the label.","example":2},"title":{"type":"string","description":"Display title of the label.","example":"Strategic Initiative"}}},"Milestone":{"title":"Milestone","type":"object","description":"A milestone within a milestone-type Key Result.","required":["title","done"],"properties":{"title":{"type":"string","description":"Description of the milestone.","example":"Strategic priorities approved by leadership team"},"done":{"type":"boolean","description":"Whether the milestone has been completed.","example":true}}},"MilestoneInput":{"title":"Milestone Input","type":"object","description":"Input for creating or updating a milestone within a Key Result.","required":["title"],"properties":{"title":{"type":"string","minLength":1,"maxLength":255,"description":"Title of the milestone.","example":"Complete design phase"},"done":{"type":"boolean","description":"Whether the milestone is completed. Defaults to false.","default":false,"example":false}}},"Note":{"title":"Note","type":"object","description":"A Note is a short annotation attached to a Goal, Key Result, Initiative, or KPI.\n","required":["id","kind","title","resolved_at","created_at","updated_at","creator","resource","comments"],"properties":{"id":{"type":"integer","description":"Unique identifier for the note.","example":123},"kind":{"type":"string","description":"What the note records: `impediment` (something blocking progress), `risk`, `learning`, `achievement`, `decision`, `question` or a general `comment`.","enum":["impediment","risk","learning","achievement","decision","question","comment"],"example":"risk"},"title":{"type":"string","description":"Title of the note. User mentions are rendered as plain names.","example":"Supplier delivery slipping"},"description":{"type":["string","null"],"description":"Optional body of the note. User mentions are rendered as plain names.","example":"We may miss the Q2 milestone."},"resolved_at":{"type":["string","null"],"format":"date-time","description":"Timestamp when the note was resolved in ISO 8601 format, or null if unresolved.","example":"2026-04-02T09:15:00Z"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the note was created in ISO 8601 format.","example":"2026-01-20T14:45:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the note was last updated in ISO 8601 format.","example":"2026-01-21T09:10:00Z"},"creator":{"$ref":"#/components/schemas/UserReference"},"resource":{"$ref":"#/components/schemas/NoteResourceReference"},"comments":{"type":"array","description":"Comments on the note, ordered by creation date (oldest first).","items":{"$ref":"#/components/schemas/NoteComment"}}}},"NoteComment":{"title":"Note Comment","type":"object","description":"A comment on a note.","required":["id","text","creator","created_at","updated_at"],"properties":{"id":{"type":"integer","description":"Unique identifier for the comment.","example":9},"text":{"type":["string","null"],"description":"Comment body. User mentions are rendered as plain names.","example":"Agreed, escalating to procurement."},"creator":{"$ref":"#/components/schemas/UserReference"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the comment was created in ISO 8601 format.","example":"2026-01-20T16:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the comment was last updated in ISO 8601 format.","example":"2026-01-20T16:00:00Z"}}},"NoteResourceReference":{"title":"Note Resource Reference","type":"object","description":"A reference to the resource a note is attached to.","required":["type","id","title"],"properties":{"type":{"type":"string","description":"The type of the referenced resource.","enum":["goal","key_result","initiative","kpi"],"example":"goal"},"id":{"type":"integer","description":"Unique identifier of the referenced resource.","example":42},"title":{"type":"string","description":"Title of the referenced resource.","example":"Be number #1 in our market"}}},"OrganizationReference":{"title":"Organization Reference","type":"object","description":"A reference to the organization in the Workpath platform.","required":["id","name"],"properties":{"id":{"type":"integer","description":"Unique identifier for the organization. Currently always 1.","example":1},"name":{"type":"string","description":"Name of the organization.","example":"ACME"}}},"Owners":{"title":"Owners","type":"object","description":"Ownership information for a resource. Empty arrays may be omitted from the response.\n","properties":{"users":{"type":"array","description":"User owners.","items":{"$ref":"#/components/schemas/UserReference"}},"teams":{"type":"array","description":"Team owners.","items":{"$ref":"#/components/schemas/TeamReference"}},"business_units":{"type":"array","description":"Business Unit owners.","items":{"$ref":"#/components/schemas/BusinessUnitReference"}},"organizations":{"type":"array","description":"Organization owners.","items":{"$ref":"#/components/schemas/OrganizationReference"}}},"examples":[{"users":[{"id":5,"name":"Thomas Weber"}],"teams":[{"id":4,"name":"Strategy Office"}]}]},"OwnersRequest":{"title":"Owners Request","type":"object","description":"Ownership specification for create/update request bodies.\n\nOnly the `id` field is required for each owner reference; names are ignored.\n","properties":{"users":{"type":"array","description":"User owners. Exactly one user owner is required for Goals.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"teams":{"type":"array","description":"Team owners. Exactly one of teams, business_units, or organizations is required for Goals.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"business_units":{"type":"array","description":"Business Unit owners. Exactly one of teams, business_units, or organizations is required for Goals.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}},"organizations":{"type":"array","description":"Organization owners. Exactly one of teams, business_units, or organizations is required for Goals.","items":{"$ref":"#/components/schemas/AlignmentIdReference"}}}},"StrategicElement":{"title":"Strategic Element","type":"object","description":"A Strategic Element is a long-term strategic theme, such as a strategic pillar, priority or focus area, of the organization, a Business Unit or a team.\n\n**Ownership:**\nThe `owners` object indicates the tier of the strategy — no separate `kind` field is exposed:\n- `owners.organizations` is populated for organization-level strategies.\n- `owners.teams` is populated for team-level strategies (may be multiple teams).\n- `owners.business_units` is populated for business-unit-level strategies (may be multiple BUs).\n- `owners.users` contains the leads responsible for this strategy, and is omitted if there are none.\n- Empty owner arrays are omitted from the response.\n\n**Alignments:**\n- `supports` shows what Goals, Key Results, Initiatives, KPIs, or other Strategic Elements this strategy contributes to.\n- `supported_by` shows what entities support this strategy.\n- The entire `supports`/`supported_by` object is omitted if there are no alignments.\n","required":["id","title","description","start_date","end_date","created_at","updated_at","workpath_url","owners","external_urls","category"],"properties":{"id":{"type":"integer","description":"Unique identifier for the Strategic Element.","example":1},"title":{"type":"string","description":"Title of the Strategic Element.","example":"Become market leader in DACH"},"description":{"type":["string","null"],"description":"Optional description.","example":"Our north star for the next 3 years."},"start_date":{"type":["string","null"],"format":"date","description":"Start date in ISO 8601 format.","example":"2026-01-01"},"end_date":{"type":["string","null"],"format":"date","description":"End date in ISO 8601 format.","example":"2026-12-31"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the Strategic Element was created.","example":"2025-10-01T09:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the Strategic Element was last updated.","example":"2026-01-15T14:30:00Z"},"workpath_url":{"type":"string","format":"uri","description":"URL to view the Strategic Element in Workpath.","example":"https://company.workpath.com/strategicElements/1"},"category":{"type":["object","null"],"description":"Optional category classification.","required":["id","name"],"properties":{"id":{"type":"integer","example":3},"name":{"type":"string","example":"Financial"}},"example":{"id":3,"name":"Financial"}},"external_urls":{"type":"array","description":"External URLs linked to this Strategic Element (e.g. strategy documents, Confluence pages).","items":{"type":"object","required":["name","url"],"properties":{"name":{"type":"string","example":"Strategy Deck"},"url":{"type":"string","format":"uri","example":"https://docs.example.com/strategy"}}}},"owners":{"type":"object","description":"Owners of the Strategic Element. The populated array indicates the tier:\n- `organizations` → organization-level strategy\n- `teams` → team-level strategy\n- `business_units` → business-unit-level strategy\n- `users` → leads responsible for this strategy\n","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/UserReference"}},"teams":{"type":"array","items":{"$ref":"#/components/schemas/TeamReference"}},"business_units":{"type":"array","items":{"$ref":"#/components/schemas/BusinessUnitReference"}},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationReference"}}}},"supports":{"description":"Entities that this Strategic Element supports (contributes to).\nOmitted if there are no alignments.\n","$ref":"#/components/schemas/Alignments"},"supported_by":{"description":"Entities that support this Strategic Element.\nOmitted if there are no alignments.\n","$ref":"#/components/schemas/Alignments"}}},"Team":{"title":"Team","type":"object","description":"A Team is a group of people in the customer's organization, such as a department or an operational team.\n\n**Leads:**\nTeams can have zero or more leads (users who manage the team). Currently, teams have at most one lead, but this may change in the future. Leads are always included in the `members` array as well.\n\n**Hierarchy:**\n- `ancestors` contains the path from the root team to the parent, ordered from root to immediate parent\n- `children` contains only direct children (not recursive)\n\n**Members:**\nThe `members` array contains all team members, including leads, sorted by first name.\n","required":["id","name","created_at","updated_at","workpath_url","leads","ancestors","children","members"],"properties":{"id":{"type":"integer","description":"Unique identifier for the team.","example":4},"name":{"type":"string","description":"Name of the team.","example":"Strategy Office"},"description":{"type":["string","null"],"description":"Description of the team. May be `null` if not set.","example":"Responsible for defining and tracking company-wide strategic objectives."},"external_id":{"type":["string","null"],"description":"External identifier for integration with other systems, called \"Team Code\" in the Workpath UI. Typically used for systemic organizational codes assigned to teams in large organizations (e.g., \"WP-PE-INF\"). May be `null` if not set.","example":"WP-STR-001"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the team was created in ISO 8601 format.","example":"2025-12-15T10:30:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the team was last updated in ISO 8601 format.","example":"2026-01-20T14:45:00Z"},"workpath_url":{"type":"string","format":"uri","description":"URL to view the team in the Workpath platform.","example":"https://acme.workpath.com/teams/4"},"leads":{"type":"array","description":"Users who lead this team. Leads are also included in the `members` array. May be empty if no leads are assigned. Currently limited to at most one lead, but this may change in the future.","items":{"$ref":"#/components/schemas/UserReference"}},"business_unit":{"oneOf":[{"$ref":"#/components/schemas/BusinessUnitReference"},{"type":"null"}],"description":"Business Unit the team belongs to. May be `null` if not assigned.","example":{"id":2,"name":"ACME EMEA"}},"ancestors":{"type":"array","description":"Team hierarchy path from root to immediate parent. Empty for root-level teams. Ordered from root to immediate parent.","items":{"$ref":"#/components/schemas/TeamReference"}},"children":{"type":"array","description":"Direct child teams (not recursive). Empty if the team has no children.","items":{"$ref":"#/components/schemas/TeamReference"}},"members":{"type":"array","description":"All users who are members of this team, including leads. Empty if the team has no members.","items":{"$ref":"#/components/schemas/UserReference"}}},"examples":[{"id":4,"name":"Strategy Office","description":"Responsible for defining and tracking company-wide strategic objectives.","external_id":"WP-STR-001","created_at":"2025-12-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","workpath_url":"https://acme.workpath.com/teams/4","leads":[{"id":5,"name":"Thomas Weber"}],"business_unit":{"id":2,"name":"ACME EMEA"},"ancestors":[{"id":1,"name":"ACME Corp"},{"id":2,"name":"Executive Team"}],"children":[{"id":10,"name":"Strategy Analytics"}],"members":[{"id":5,"name":"Thomas Weber"},{"id":3,"name":"Maria Schmidt"},{"id":7,"name":"Sarah Johnson"}]}]},"TeamReference":{"title":"Team Reference","type":"object","description":"A reference to a team in the Workpath platform.","required":["id","name"],"properties":{"id":{"type":"integer","description":"Unique identifier for the team.","example":4},"name":{"type":"string","description":"Name of the team.","example":"Strategy Office"}}},"User":{"title":"User","type":"object","description":"A User represents a person with access to the Workpath platform.\n\nEach user has exactly one license determining their access level, and may have zero or more roles granting additional permissions.\n","required":["id","email","first_name","last_name","name","created_at","updated_at","workpath_url","status","license","roles","business_units"],"properties":{"id":{"type":"integer","description":"Unique identifier for the user.","example":5},"email":{"type":"string","format":"email","description":"Email address of the user.","example":"thomas.weber@acme.com"},"first_name":{"type":"string","description":"First name of the user.","example":"Thomas"},"last_name":{"type":"string","description":"Last name of the user.","example":"Weber"},"name":{"type":"string","description":"Full name of the user (first name + last name).","example":"Thomas Weber"},"external_id":{"type":["string","null"],"description":"External identifier for integration with other systems. Typically set via SAML or SCIM integration, often containing an ID from the identity provider (e.g., Entra ID object ID) or another internal employee ID. May be `null` if not set.","example":"EMP-001"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the user was created in ISO 8601 format.","example":"2025-01-15T10:30:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the user was last updated in ISO 8601 format.","example":"2026-01-20T14:45:00Z"},"deactivated_at":{"type":["string","null"],"format":"date-time","description":"Timestamp when the user was deactivated in ISO 8601 format. `null` if the user is active.","example":"2026-06-30T16:00:00Z"},"last_active_at":{"type":["string","null"],"format":"date-time","description":"Timestamp when the user was last active in ISO 8601 format. `null` if no activity has been recorded.","example":"2026-01-21T08:15:00Z"},"workpath_url":{"type":"string","format":"uri","description":"URL to view the user in the Workpath platform.","example":"https://acme.workpath.com/users/5"},"status":{"type":"string","enum":["active","invited","deactivated"],"description":"Mirrors the user status shown in the Workpath user settings UI (https://your-account.workpath.com/settings/users):\n- `deactivated` — `deactivated_at` is set.\n- `invited` — the user has an outstanding invitation and has not yet completed their first login.\n- `active` — otherwise.\n\nUse `status` instead of deriving buckets from `deactivated_at` / `last_active_at`, so your reporting matches what end users see in Workpath.\n","example":"active"},"license":{"type":"string","enum":["standard","analyst","viewer"],"description":"What the user can do in Workpath: `standard` users work with Goals, Key Results and Initiatives; `viewer` users can only view and follow them; `analyst` users additionally get access to reports.","example":"standard"},"roles":{"type":"array","description":"Additional responsibilities: `super_admin` users administer the customer's Workpath account, `program_lead` users run the goal-setting program, and `coach` users help teams draft their Goals. A user can have zero, one or several roles.","items":{"type":"string","enum":["super_admin","program_lead","coach"]},"example":["super_admin","coach"]},"business_units":{"type":"array","description":"Business Units the user belongs to. May be empty.","items":{"$ref":"#/components/schemas/BusinessUnitReference"}}},"examples":[{"id":5,"email":"thomas.weber@acme.com","first_name":"Thomas","last_name":"Weber","name":"Thomas Weber","external_id":"EMP-001","created_at":"2025-01-15T10:30:00Z","updated_at":"2026-01-20T14:45:00Z","deactivated_at":null,"last_active_at":"2026-01-21T08:15:00Z","workpath_url":"https://acme.workpath.com/users/5","status":"active","license":"standard","roles":["super_admin","coach"],"business_units":[{"id":2,"name":"ACME EMEA"}]}]},"UserReference":{"title":"User Reference","type":"object","description":"A reference to a user in the Workpath platform.","required":["id","name"],"properties":{"id":{"type":"integer","description":"Unique identifier for the user.","example":5},"name":{"type":"string","description":"Full name of the user.","example":"Thomas Weber"}}},"WebhookEnvelope":{"title":"Webhook Envelope","type":"object","description":"Common envelope wrapping every webhook delivery. Entity-specific fields live under `data`\n(its shape depends on `event` — see each webhook operation for the concrete schema).\n","required":["schema_version","account_subdomain","event","event_id","created_at"],"properties":{"schema_version":{"type":"integer","description":"Envelope schema version. Increments only on breaking changes (field removal, rename,\ntype change). Additive new fields do not bump it — consumers must ignore unknown fields.\n","example":1},"account_subdomain":{"type":"string","description":"Subdomain of the Workpath account the event belongs to (e.g. `acme` for\n`acme.workpath.com`). Useful if your organization has multiple Workpath subdomains.\n","example":"acme"},"event":{"type":"string","description":"The event key, e.g. `goal.created`. Matches the `X-Workpath-Event` header.","example":"goal.created"},"event_id":{"type":"integer","description":"Monotonic, 1-based sequence number scoped to your subscription. Use it as an\nidempotency key — retried deliveries reuse the same value.\n","example":9},"created_at":{"type":"string","format":"date-time","description":"When the event occurred in Workpath (not when it was delivered).","example":"2026-04-30T09:17:32Z"}}},"WebhookGoal":{"title":"Webhook Goal","type":"object","description":"The Goal payload for `goal.created` / `goal.updated` webhooks: the Goal's own attributes.\nTo work with related entities — Key Results, alignments, labels, cycles, owners — use the\nGoal `id` with the Connect API. `goal.deleted` carries only `{ id }`.\n","required":["id","title","draft","progress","confidence_level","start_date","target_date","created_at","updated_at"],"properties":{"id":{"type":"integer","description":"Unique identifier for the Goal.","example":42},"title":{"type":"string","example":"Increase EU revenue by 15%"},"description":{"type":["string","null"],"example":"Drive growth across DACH and Nordics with focused account expansion."},"draft":{"type":"boolean","description":"Whether the Goal is still a draft.","example":false},"progress":{"type":"number","description":"Progress as a fraction between 0 and 1.","example":0.45},"confidence_level":{"type":"integer","description":"Confidence from 1 to 10 (1–3 off track, 4–6 warning, 7–10 on track).","example":8},"start_date":{"type":"string","format":"date","example":"2026-01-01"},"target_date":{"type":"string","format":"date","example":"2026-06-30"},"created_at":{"type":"string","format":"date-time","example":"2026-01-08T14:22:00Z"},"updated_at":{"type":"string","format":"date-time","example":"2026-04-30T09:17:30Z"}}},"WebhookInitiative":{"title":"Webhook Initiative","type":"object","description":"The Initiative payload for `initiative.created` / `initiative.updated` webhooks — the\nInitiative's own attributes. To work with related entities, use the `id` with the Connect API.\n`initiative.deleted` carries only `{ id }`.\n","required":["id","title","status","created_at","updated_at"],"properties":{"id":{"type":"integer","example":8912},"title":{"type":"string","example":"Launch self-service onboarding flow"},"description":{"type":["string","null"],"example":"Replace the assisted setup with a guided product tour."},"status":{"type":"string","enum":["not_started","in_progress","in_danger","done","failed"],"example":"in_progress"},"confidence_level":{"type":["integer","null"],"minimum":1,"maximum":10,"description":"Confidence level of the Initiative (1-10). `null` when nobody has set one.","example":7},"progress":{"type":"number","minimum":0,"maximum":1,"description":"Progress of the Initiative as a decimal between 0 and 1. `0` when progress tracking is disabled.","example":0.4},"start_date":{"type":["string","null"],"format":"date","example":"2026-02-01"},"target_date":{"type":["string","null"],"format":"date","example":"2026-05-31"},"external_id":{"type":["string","null"],"example":"PRJ-1042"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"WebhookKeyResult":{"title":"Webhook Key Result","type":"object","description":"The Key Result payload for `key_result.created` / `key_result.updated` webhooks — the key\nresult's own attributes. To work with related entities, use the `id` with the Connect API.\n`key_result.deleted` carries only `{ id }`.\n","required":["id","title","type","progress","confidence_level","current_value","start_value","target_value","created_at","updated_at"],"properties":{"id":{"type":"integer","example":4711},"title":{"type":"string","example":"Net Promoter Score reaches 60"},"description":{"type":["string","null"],"example":"Drive customer satisfaction across self-serve cohorts."},"type":{"type":"string","description":"Key Result type.","enum":["numeric","percental","monetary","milestone","contributing_goal"],"example":"numeric"},"progress":{"type":"number","description":"Progress as a fraction; 1 means the target is reached. It exceeds 1 when the target is overachieved and can drop below 0.","example":0.6},"confidence_level":{"type":"integer","description":"Confidence from 1 to 10 (1–3 off track, 4–6 warning, 7–10 on track).","example":6},"current_value":{"type":"number","example":51},"start_value":{"type":"number","example":42},"target_value":{"type":"number","example":60},"currency":{"type":["string","null"],"description":"ISO 4217 currency code; present only for monetary Key Results.","example":"EUR"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}},"security":[{"JWT":[]}]}