{"schemaVersion":"1.0","sourceCommit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca","sourceVisibility":"private","article":{"id":"api-mansoq-im-wrapper-metawebhookview-6e8b99ee","title":"Meta Webhook View API reference · mansoq-im-wrapper","summary":"Static source contract for Meta Webhook View: 2 declared or inherited operation mappings, schema/field evidence and authorization/refusal references. Deployment and behavioral review remain explicit.","module":"IT & integrations","roles":["IT administrator","Developer","Integration engineer"],"facilities":["All configured facility types"],"kind":"reference","minutes":3,"prerequisites":["Use the API contract from the installed deployment and an authorized synthetic test environment.","Confirm facility/organization scope, action permissions and optional app enablement.","This reference is static source evidence; complete payload, authorization, failure and end-to-end review remains recorded as pending."],"steps":[],"sections":[{"title":"Declared route and availability","body":"This resource is declared in **mansoq-im-wrapper** at `/api/{installed_plugin_prefix}/webhook/meta/`. plugin/local mount; actual prefix and enablement require deployment verification A registered path and an indexed handler do not prove deployment availability, user permission or production readiness."},{"title":"Operation map","body":"| Method | Path | Action | Evidence |\n| --- | --- | --- | --- |\n| GET | `/api/{installed_plugin_prefix}/webhook/meta/` | get | explicit Django path/view declaration |\n| POST | `/api/{installed_plugin_prefix}/webhook/meta/` | post | explicit Django path/view declaration |"},{"title":"get · GET","body":"**GET /api/{installed_plugin_prefix}/webhook/meta/** — action `get`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| deployment mount | installed_plugin_prefix | deployment-selected mount prefix | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| query | `{computed field name}` | not declared at read site | not established |\n\n**Authorization:** no literal permission name was resolved in the bounded handler/helper traversal. Authentication, inherited policies, object/facility scoping and middleware still require review; this does not mean public access.\n\n**Explicit response statuses in observed code:** 500, 403. Other branches/framework exception handling may differ."},{"title":"post · POST","body":"**POST /api/{installed_plugin_prefix}/webhook/meta/** — action `post`. static contract extracted; runtime/permission/payload behavior review pending.\n\nPath and deployment-context parameters:\n\n| Location | Parameter | Type | Required |\n| --- | --- | --- | --- |\n| deployment mount | installed_plugin_prefix | deployment-selected mount prefix | true |\n\nDirectly observed request reads (these do not constitute a complete accepted-payload or requiredness guarantee):\n\n| Location | Field | Declared/inferred read type | Requiredness evidence |\n| --- | --- | --- | --- |\n| header | `{computed field name}` | not declared at read site | not established |\n\n**Authorization:** no literal permission name was resolved in the bounded handler/helper traversal. Authentication, inherited policies, object/facility scoping and middleware still require review; this does not mean public access.\n\n**Explicit response statuses in observed code:** 401, 400, 500, 200. Other branches/framework exception handling may differ.\n\n**Declared refusal/error evidence:** SignatureVerificationError: Invalid signature; PayloadParseError: Invalid JSON."},{"title":"Integration review checklist","body":"Confirm the installed route and full schema; review authentication, organization/facility scoping, all accepted fields, value-state and date/time semantics, idempotency, pagination, response/exception branches and the allowed correction/reversal workflow. Test positive and negative cases with synthetic data. This source reference does not establish external certification or replace an illustrated user procedure."}],"troubleshooting":[{"problem":"A declared route is unavailable or a request is rejected","solution":"Compare the installed revision, actual API schema, optional plugin mount, HTTP-method restrictions and recorded validation/permission evidence. Do not bypass a refusal or send a production transaction to test documentation."}],"sources":[{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/urls.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":23,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":43,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py","line":27,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":21,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py","line":37,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}],"related":["it-api-contract","it-api-auth","security-rcm-roles"],"verification":"Static API contract — behavior review pending","version":"f6e9f05f76d4","apiReferenceIds":["backend-path-764e2eb96e8b99ee","backend-path-764e2eb96e8b99ee:GET:get","backend-path-764e2eb96e8b99ee:POST:post"]},"backend":{"resources":[{"id":"backend-path-764e2eb96e8b99ee","declaredPath":"webhook/meta/","dynamicPath":false,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/urls.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"conditions":[],"kind":"view","view":"MetaWebhookView","classId":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.providers.meta.MetaWebhookView","actionMapping":null,"operationIds":["backend-path-764e2eb96e8b99ee:GET:get","backend-path-764e2eb96e8b99ee:POST:post"],"path":"/api/{installed_plugin_prefix}/webhook/meta/","mountStatus":"plugin/local mount; actual prefix and enablement require deployment verification","reviewStatus":"direct route enumerated; behavioral review pending"}],"operations":[{"id":"backend-path-764e2eb96e8b99ee:GET:get","resourceId":"backend-path-764e2eb96e8b99ee","repository":"repositories/platform/mansoq-im-wrapper","boundary":"optional-plugin/local-service","method":"GET","path":"/api/{installed_plugin_prefix}/webhook/meta/","declaredPattern":"webhook/meta/","action":"get","viewset":"MetaWebhookView","classId":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.providers.meta.MetaWebhookView","detail":null,"mountStatus":"plugin/local mount; actual prefix and enablement require deployment verification","routeEvidence":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/urls.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"explicit Django path/view declaration","decoratorStatus":null,"decoratorPolicy":{},"methodEvidenceIds":["repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py:20:get","repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py:46:handle_challenge"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"installed_plugin_prefix","in":"deployment mount","type":"deployment-selected mount prefix","required":true,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/urls.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]},{"id":"backend-path-764e2eb96e8b99ee:POST:post","resourceId":"backend-path-764e2eb96e8b99ee","repository":"repositories/platform/mansoq-im-wrapper","boundary":"optional-plugin/local-service","method":"POST","path":"/api/{installed_plugin_prefix}/webhook/meta/","declaredPattern":"webhook/meta/","action":"post","viewset":"MetaWebhookView","classId":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.providers.meta.MetaWebhookView","detail":null,"mountStatus":"plugin/local mount; actual prefix and enablement require deployment verification","routeEvidence":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/urls.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"handlerSource":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":23,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"registrationConditions":[],"evidenceKind":"explicit Django path/view declaration","decoratorStatus":null,"decoratorPolicy":{},"methodEvidenceIds":["repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py:23:post","repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py:43:_parse_payload","repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py:27:handle_event","repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py:21:verify_signature","repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py:37:_dispatch_change"],"schemaIds":{},"classPermissionEvidence":[],"filterEvidence":[],"reviewStatus":"static contract extracted; runtime/permission/payload behavior review pending","pathParameters":[{"name":"installed_plugin_prefix","in":"deployment mount","type":"deployment-selected mount prefix","required":true,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/urls.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}]}],"methodEvidence":[{"id":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py:20:get","name":"get","owner":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.views.WebhookView","summary":"","source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":20,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py:46:handle_challenge","name":"handle_challenge","owner":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.mixins.ChallengeMixin","summary":"","source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":46,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[{"name":"{computed field name}","in":"query","type":"not declared at read site","required":"not established","readStyle":"get","dynamicName":true,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":48,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[{"value":500,"symbol":null,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":53,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"value":403,"symbol":null,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":57,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"value":403,"symbol":null,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":49,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py:23:post","name":"post","owner":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.views.WebhookView","summary":"","source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":23,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"SignatureVerificationError","message":"Invalid signature","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":28,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[{"value":401,"symbol":null,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":32,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"value":400,"symbol":null,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":34,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"value":500,"symbol":null,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":37,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py:43:_parse_payload","name":"_parse_payload","owner":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.views.WebhookView","summary":"","source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":43,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[],"permissionChecks":[],"declaredErrors":[{"exception":"PayloadParseError","message":"Invalid JSON","dynamicMessage":false,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/views.py","line":47,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py:27:handle_event","name":"handle_event","owner":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.providers.meta.MetaWebhookView","summary":"","source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py","line":27,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"payload","type":"dict[str, Any]","required":true,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py","line":27,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[{"value":200,"symbol":null,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py","line":35,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py:21:verify_signature","name":"verify_signature","owner":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.mixins.HmacVerificationMixin","summary":"","source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":21,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[],"parametersRead":[{"name":"{computed field name}","in":"header","type":"not declared at read site","required":"not established","readStyle":"get","dynamicName":true,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/mixins.py","line":26,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"},{"id":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py:37:_dispatch_change","name":"_dispatch_change","owner":"repositories/platform/mansoq-im-wrapper:mansoq_im_wrapper.webhooks.providers.meta.MetaWebhookView","summary":"","source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py","line":37,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"},"signatureParameters":[{"name":"change","type":"dict[str, Any]","required":true,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py","line":37,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}},{"name":"channel","type":"str","required":true,"source":{"path":"repositories/platform/mansoq-im-wrapper/src/mansoq_im_wrapper/webhooks/providers/meta.py","line":37,"commit":"f6e9f05f76d443b26ebd2369f67d3c3bd52257ca"}}],"parametersRead":[],"permissionChecks":[],"declaredErrors":[],"explicitResponseStatuses":[],"conditions":[],"schemaIds":[],"schemaUsages":[],"unconditionalRaise":false,"reviewStatus":"static declaration extracted; behavioral/security review pending"}],"schemas":[],"frameworkSettings":[]},"frontend":{"operations":[],"schemas":[]},"services":{"operations":[]},"boundaries":[]}