---
title: "competency.proficiency_achieved"
description: "Delivered when competency.proficiency_achieved occurs. Signed per the Standard Webhooks specification: verify the webhook-signature header over the exact bytes of webhook-id, webhook-timestamp and the raw body, and reject a timestamp more than five minutes from your own clock."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/llms.txt
> Use this file to discover all available pages before exploring further.

Path: Quire API

`POST competency.proficiency_achieved`

_Webhook._

Delivered when competency.proficiency_achieved occurs. Signed per the Standard Webhooks specification: verify the webhook-signature header over the exact bytes of webhook-id, webhook-timestamp and the raw body, and reject a timestamp more than five minutes from your own clock.

## Request body

_Required._

- `competency.proficiency_achieved.id` (string, required) — Equal to the webhook-id header and to the outbox event identifier. Deduplicate on it.
- `competency.proficiency_achieved.type` (string, required)
- `competency.proficiency_achieved.version` (integer, required)
- `competency.proficiency_achieved.occurred_at` (string, required)
  - format `date-time`
- `competency.proficiency_achieved.tenant` (object, required)
  - `competency.proficiency_achieved.tenant.id` (string, required)
  - `competency.proficiency_achieved.tenant.slug` (string, required)
- `competency.proficiency_achieved.subscription_id` (string, required)
- `competency.proficiency_achieved.livemode` (boolean, required)
- `competency.proficiency_achieved.data` (object, required)
  - `competency.proficiency_achieved.data.achieved_at` (string, required)
    - format `date-time`; pattern `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$`
  - `competency.proficiency_achieved.data.competency_id` (string, required)
    - format `uuid`; pattern `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$`
  - `competency.proficiency_achieved.data.framework_id` (string, required)
    - format `uuid`; pattern `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$`
  - `competency.proficiency_achieved.data.user_id` (string, required)
    - format `uuid`; pattern `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$`
- `competency.proficiency_achieved.links` (map<string>, optional) — Where to read the current state of what the event is about.

## Example request

```json
{
  "id": "string",
  "type": "competency.proficiency_achieved",
  "version": 1,
  "occurred_at": "2019-08-24T14:15:22Z",
  "tenant": {
    "id": "string",
    "slug": "string"
  },
  "subscription_id": "string",
  "livemode": true,
  "data": {
    "achieved_at": "2019-08-24T14:15:22Z",
    "competency_id": "0c946d13-2bb2-46c7-bde4-b2a3644459a8",
    "framework_id": "4c1c36c9-0232-44b3-bdd8-4bdb3daaf53b",
    "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
  },
  "links": {
    "property1": "http://example.com",
    "property2": "http://example.com"
  }
}
```

## Responses

### 2XX

Any 2xx acknowledges the delivery. A 410 disables the subscription. Anything else is retried with exponential backoff and full jitter over about 36 hours.


Source: https://docs.quirelms.com/api/webhooks/competency.proficiency_achieved/index.md
