@x12i/memorix-service 3.2.1 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +43 -2
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +4 -0
  4. package/dist/app.js.map +1 -1
  5. package/dist/catalog/catalog-service.d.ts +48 -0
  6. package/dist/catalog/catalog-service.d.ts.map +1 -0
  7. package/dist/catalog/catalog-service.js +397 -0
  8. package/dist/catalog/catalog-service.js.map +1 -0
  9. package/dist/catalog/package-list-source.d.ts +35 -0
  10. package/dist/catalog/package-list-source.d.ts.map +1 -0
  11. package/dist/catalog/package-list-source.js +47 -0
  12. package/dist/catalog/package-list-source.js.map +1 -0
  13. package/dist/catalog/types.d.ts +65 -0
  14. package/dist/catalog/types.d.ts.map +1 -0
  15. package/dist/catalog/types.js +16 -0
  16. package/dist/catalog/types.js.map +1 -0
  17. package/dist/catalog-store-cli.d.ts +20 -0
  18. package/dist/catalog-store-cli.d.ts.map +1 -0
  19. package/dist/catalog-store-cli.js +206 -0
  20. package/dist/catalog-store-cli.js.map +1 -0
  21. package/dist/cli.d.ts +3 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +48 -18
  24. package/dist/cli.js.map +1 -1
  25. package/dist/connector-ops/attempt-store.d.ts +5 -0
  26. package/dist/connector-ops/attempt-store.d.ts.map +1 -0
  27. package/dist/connector-ops/attempt-store.js +186 -0
  28. package/dist/connector-ops/attempt-store.js.map +1 -0
  29. package/dist/connector-ops/index.d.ts +5 -0
  30. package/dist/connector-ops/index.d.ts.map +1 -0
  31. package/dist/connector-ops/index.js +5 -0
  32. package/dist/connector-ops/index.js.map +1 -0
  33. package/dist/connector-ops/override-store.d.ts +7 -0
  34. package/dist/connector-ops/override-store.d.ts.map +1 -0
  35. package/dist/connector-ops/override-store.js +123 -0
  36. package/dist/connector-ops/override-store.js.map +1 -0
  37. package/dist/connector-ops/sanitize.d.ts +16 -0
  38. package/dist/connector-ops/sanitize.d.ts.map +1 -0
  39. package/dist/connector-ops/sanitize.js +48 -0
  40. package/dist/connector-ops/sanitize.js.map +1 -0
  41. package/dist/connector-ops/types.d.ts +76 -0
  42. package/dist/connector-ops/types.d.ts.map +1 -0
  43. package/dist/connector-ops/types.js +12 -0
  44. package/dist/connector-ops/types.js.map +1 -0
  45. package/dist/effective-listing.d.ts +11 -0
  46. package/dist/effective-listing.d.ts.map +1 -0
  47. package/dist/effective-listing.js +41 -0
  48. package/dist/effective-listing.js.map +1 -0
  49. package/dist/errors.d.ts +5 -1
  50. package/dist/errors.d.ts.map +1 -1
  51. package/dist/errors.js +10 -3
  52. package/dist/errors.js.map +1 -1
  53. package/dist/execution-target.d.ts +16 -0
  54. package/dist/execution-target.d.ts.map +1 -1
  55. package/dist/execution-target.js +54 -0
  56. package/dist/execution-target.js.map +1 -1
  57. package/dist/index.d.ts +3 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +3 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/magit/magit-pack-service.d.ts +252 -70
  62. package/dist/magit/magit-pack-service.d.ts.map +1 -1
  63. package/dist/magit/magit-pack-service.js +556 -202
  64. package/dist/magit/magit-pack-service.js.map +1 -1
  65. package/dist/magit/pack-to-patchset.d.ts +21 -0
  66. package/dist/magit/pack-to-patchset.d.ts.map +1 -1
  67. package/dist/magit/pack-to-patchset.js +29 -0
  68. package/dist/magit/pack-to-patchset.js.map +1 -1
  69. package/dist/magit/package-catalog-bridge.d.ts +4 -14
  70. package/dist/magit/package-catalog-bridge.d.ts.map +1 -1
  71. package/dist/magit/package-catalog-bridge.js +2 -21
  72. package/dist/magit/package-catalog-bridge.js.map +1 -1
  73. package/dist/mgc-packages.d.ts +4 -3
  74. package/dist/mgc-packages.d.ts.map +1 -1
  75. package/dist/mgc-packages.js +4 -3
  76. package/dist/mgc-packages.js.map +1 -1
  77. package/dist/openapi/openapi.json +1716 -137
  78. package/dist/optional-companion-url.d.ts +72 -0
  79. package/dist/optional-companion-url.d.ts.map +1 -0
  80. package/dist/optional-companion-url.js +148 -0
  81. package/dist/optional-companion-url.js.map +1 -0
  82. package/dist/platform.d.ts +11 -0
  83. package/dist/platform.d.ts.map +1 -1
  84. package/dist/platform.js +77 -2
  85. package/dist/platform.js.map +1 -1
  86. package/dist/routes/catalog.d.ts +4 -0
  87. package/dist/routes/catalog.d.ts.map +1 -0
  88. package/dist/routes/catalog.js +103 -0
  89. package/dist/routes/catalog.js.map +1 -0
  90. package/dist/routes/connector-ops.d.ts +12 -0
  91. package/dist/routes/connector-ops.d.ts.map +1 -0
  92. package/dist/routes/connector-ops.js +160 -0
  93. package/dist/routes/connector-ops.js.map +1 -0
  94. package/dist/routes/memory.d.ts.map +1 -1
  95. package/dist/routes/memory.js +9 -2
  96. package/dist/routes/memory.js.map +1 -1
  97. package/dist/routes/metadata.d.ts.map +1 -1
  98. package/dist/routes/metadata.js +135 -186
  99. package/dist/routes/metadata.js.map +1 -1
  100. package/dist/routes/pipelines.d.ts.map +1 -1
  101. package/dist/routes/pipelines.js +3 -2
  102. package/dist/routes/pipelines.js.map +1 -1
  103. package/openapi/openapi.json +1716 -137
  104. package/package.json +30 -7
@@ -44,7 +44,19 @@
44
44
  },
45
45
  {
46
46
  "name": "Jobs",
47
- "description": "Jobs Manager repeated-work API. P3 reads and P4 writes live. See .operational/jobs-v1-api-FR.md"
47
+ "description": "Jobs Manager repeated-work API. P3 reads and P4 writes live."
48
+ },
49
+ {
50
+ "name": "Connectors",
51
+ "description": "Unified connector catalog (registry + builtins + MGC remote hosts)"
52
+ },
53
+ {
54
+ "name": "Catalog",
55
+ "description": "Global product package catalog (Memorix typed store)"
56
+ },
57
+ {
58
+ "name": "ConnectorOps",
59
+ "description": "MCO-01/MCO-02 org-scoped connector-op overrides and attempt stats ledger. Path orgId must match x-memorix-org-id."
48
60
  }
49
61
  ],
50
62
  "paths": {
@@ -9581,161 +9593,1533 @@
9581
9593
  },
9582
9594
  "description": "Catalog for Jobs Manager execution-target picker."
9583
9595
  }
9584
- }
9585
- },
9586
- "components": {
9587
- "parameters": {
9588
- "XMemorixOrgId": {
9589
- "name": "x-memorix-org-id",
9590
- "in": "header",
9591
- "required": true,
9592
- "schema": {
9593
- "type": "string",
9594
- "minLength": 1
9595
- },
9596
- "description": "Organization / data-universe id"
9597
- },
9598
- "XMemorixAgentIds": {
9599
- "name": "x-memorix-agent-ids",
9600
- "in": "header",
9601
- "required": true,
9602
- "schema": {
9603
- "type": "string",
9604
- "minLength": 1
9605
- },
9606
- "description": "Comma-separated agentIds for effective metadata",
9607
- "example": "ops,fieldstone"
9608
- }
9609
9596
  },
9610
- "schemas": {
9611
- "MemorixScope": {
9612
- "type": "object",
9613
- "required": [
9614
- "orgId",
9615
- "agentIds"
9597
+ "/api/connectors": {
9598
+ "get": {
9599
+ "operationId": "listConnectors",
9600
+ "summary": "List unified connectors (registry + builtins + MGC live catalogs)",
9601
+ "tags": [
9602
+ "Connectors"
9616
9603
  ],
9617
- "additionalProperties": false,
9618
- "properties": {
9619
- "orgId": {
9620
- "type": "string",
9621
- "minLength": 1,
9622
- "description": "Data universe / org isolation key"
9604
+ "parameters": [
9605
+ {
9606
+ "$ref": "#/components/parameters/XMemorixOrgId"
9623
9607
  },
9624
- "agentIds": {
9625
- "type": "array",
9626
- "items": {
9627
- "type": "string",
9628
- "minLength": 1
9629
- },
9630
- "minItems": 1,
9631
- "uniqueItems": true,
9632
- "description": "Effective metadata agent chain (canonicalized/sorted)"
9608
+ {
9609
+ "$ref": "#/components/parameters/XMemorixAgentIds"
9633
9610
  }
9634
- },
9635
- "example": {
9636
- "orgId": "acme",
9637
- "agentIds": [
9638
- "opx",
9639
- "fieldstone"
9640
- ]
9641
- }
9642
- },
9643
- "MemorixIdentifier": {
9644
- "type": "object",
9645
- "required": [
9646
- "kind",
9647
- "value"
9648
9611
  ],
9649
- "properties": {
9650
- "kind": {
9651
- "type": "string"
9652
- },
9653
- "value": {
9654
- "type": "string"
9655
- },
9656
- "issuer": {
9657
- "type": "string"
9612
+ "responses": {
9613
+ "200": {
9614
+ "description": "Merged connector catalog. Live MGC rows only appear when the host is reachable and has them installed (partial pack seed is normal).",
9615
+ "content": {
9616
+ "application/json": {
9617
+ "schema": {
9618
+ "type": "object",
9619
+ "required": [
9620
+ "scope",
9621
+ "sourceConnectors",
9622
+ "targetConnectors",
9623
+ "connectors",
9624
+ "genericConnectors"
9625
+ ],
9626
+ "properties": {
9627
+ "scope": {
9628
+ "$ref": "#/components/schemas/MemorixScope"
9629
+ },
9630
+ "sourceConnectors": {
9631
+ "type": "array",
9632
+ "description": "Pull-capable rows (isSource)",
9633
+ "items": {
9634
+ "$ref": "#/components/schemas/ConnectorCatalogEntry"
9635
+ }
9636
+ },
9637
+ "targetConnectors": {
9638
+ "type": "array",
9639
+ "description": "Deliver-capable rows (isTarget)",
9640
+ "items": {
9641
+ "$ref": "#/components/schemas/ConnectorCatalogEntry"
9642
+ }
9643
+ },
9644
+ "connectors": {
9645
+ "type": "array",
9646
+ "description": "Compat alias of sourceConnectors",
9647
+ "items": {
9648
+ "$ref": "#/components/schemas/ConnectorCatalogEntry"
9649
+ }
9650
+ },
9651
+ "genericConnectors": {
9652
+ "type": "object",
9653
+ "properties": {
9654
+ "sourceServiceUrl": {
9655
+ "type": "string",
9656
+ "nullable": true,
9657
+ "description": "Configured MGC_SOURCE_SERVICE_URL (null when unset)"
9658
+ },
9659
+ "targetServiceUrl": {
9660
+ "type": "string",
9661
+ "nullable": true,
9662
+ "description": "Configured MGC_TARGET_SERVICE_URL (null when unset)"
9663
+ }
9664
+ }
9665
+ }
9666
+ }
9667
+ }
9668
+ }
9669
+ }
9658
9670
  },
9659
- "normalizedValue": {
9660
- "type": "string"
9671
+ "400": {
9672
+ "description": "Bad request / validation",
9673
+ "content": {
9674
+ "application/json": {
9675
+ "schema": {
9676
+ "$ref": "#/components/schemas/ErrorEnvelope"
9677
+ }
9678
+ }
9679
+ }
9661
9680
  }
9662
- }
9663
- },
9664
- "MemorixRecordV2": {
9665
- "type": "object",
9666
- "required": [
9667
- "format",
9668
- "recordId",
9669
- "revision",
9670
- "objectType",
9671
- "contentType",
9672
- "dataCategory",
9673
- "concept",
9674
- "data",
9675
- "_system"
9681
+ },
9682
+ "description": "Merges connector registry, platform builtins (opx/knowx), and live generic-connector host catalogs. Prefers explicit role from the host; forwards usageModel (stream|service), classification, tags, purpose, and definitionHash when present. Never invents MGC package ids when a host is down or seed sets omit them."
9683
+ }
9684
+ },
9685
+ "/api/catalog": {
9686
+ "get": {
9687
+ "operationId": "catalogListComponents",
9688
+ "summary": "List global catalog components (Magit store or flat + local kinds)",
9689
+ "tags": [
9690
+ "Catalog"
9676
9691
  ],
9677
- "properties": {
9678
- "format": {
9679
- "type": "string",
9680
- "enum": [
9681
- "memorix-record/2"
9682
- ]
9683
- },
9684
- "recordId": {
9685
- "type": "string"
9692
+ "parameters": [
9693
+ {
9694
+ "$ref": "#/components/parameters/XMemorixOrgId"
9686
9695
  },
9687
- "revision": {
9688
- "type": "integer",
9689
- "minimum": 1
9696
+ {
9697
+ "$ref": "#/components/parameters/XMemorixAgentIds"
9690
9698
  },
9691
- "objectType": {
9692
- "type": "string"
9699
+ {
9700
+ "name": "kind",
9701
+ "in": "query",
9702
+ "schema": {
9703
+ "type": "string",
9704
+ "enum": [
9705
+ "agent",
9706
+ "connector",
9707
+ "service",
9708
+ "pipeline",
9709
+ "runtime-service",
9710
+ "all"
9711
+ ]
9712
+ }
9693
9713
  },
9694
- "contentType": {
9695
- "type": "string"
9714
+ {
9715
+ "name": "publisher",
9716
+ "in": "query",
9717
+ "schema": {
9718
+ "type": "string"
9719
+ }
9696
9720
  },
9697
- "dataCategory": {
9698
- "type": "string",
9699
- "enum": [
9700
- "entity",
9701
- "event",
9702
- "knowledge"
9703
- ]
9721
+ {
9722
+ "name": "q",
9723
+ "in": "query",
9724
+ "schema": {
9725
+ "type": "string"
9726
+ }
9704
9727
  },
9705
- "concept": {
9706
- "type": "object",
9707
- "required": [
9708
- "title",
9709
- "identifiers"
9710
- ],
9711
- "properties": {
9712
- "title": {
9713
- "type": "string"
9714
- },
9715
- "identifiers": {
9716
- "type": "object",
9717
- "required": [
9718
- "primary"
9719
- ],
9720
- "properties": {
9721
- "primary": {
9722
- "$ref": "#/components/schemas/MemorixIdentifier"
9723
- },
9724
- "alternates": {
9725
- "type": "array",
9726
- "items": {
9727
- "$ref": "#/components/schemas/MemorixIdentifier"
9728
+ {
9729
+ "name": "include",
9730
+ "in": "query",
9731
+ "description": "Comma-separated: releases,deployments",
9732
+ "schema": {
9733
+ "type": "string"
9734
+ }
9735
+ }
9736
+ ],
9737
+ "responses": {
9738
+ "200": {
9739
+ "description": "Catalog component list",
9740
+ "content": {
9741
+ "application/json": {
9742
+ "schema": {
9743
+ "type": "object",
9744
+ "properties": {
9745
+ "packageTypeId": {
9746
+ "type": [
9747
+ "string",
9748
+ "null"
9749
+ ]
9750
+ },
9751
+ "typedStoreConfigured": {
9752
+ "type": "boolean"
9753
+ },
9754
+ "components": {
9755
+ "type": "array",
9756
+ "items": {
9757
+ "type": "object"
9758
+ }
9759
+ },
9760
+ "note": {
9761
+ "type": "string"
9728
9762
  }
9729
9763
  }
9730
9764
  }
9731
9765
  }
9732
9766
  }
9733
9767
  },
9734
- "data": {
9735
- "type": "object",
9736
- "additionalProperties": true
9737
- },
9738
- "analytics": {
9768
+ "503": {
9769
+ "description": "Magit unavailable"
9770
+ }
9771
+ }
9772
+ }
9773
+ },
9774
+ "/api/catalog/{kind}/{id}": {
9775
+ "get": {
9776
+ "operationId": "catalogGetComponent",
9777
+ "summary": "Get one catalog component",
9778
+ "tags": [
9779
+ "Catalog"
9780
+ ],
9781
+ "parameters": [
9782
+ {
9783
+ "$ref": "#/components/parameters/XMemorixOrgId"
9784
+ },
9785
+ {
9786
+ "$ref": "#/components/parameters/XMemorixAgentIds"
9787
+ },
9788
+ {
9789
+ "name": "kind",
9790
+ "in": "path",
9791
+ "required": true,
9792
+ "schema": {
9793
+ "type": "string"
9794
+ }
9795
+ },
9796
+ {
9797
+ "name": "id",
9798
+ "in": "path",
9799
+ "required": true,
9800
+ "schema": {
9801
+ "type": "string"
9802
+ }
9803
+ },
9804
+ {
9805
+ "name": "include",
9806
+ "in": "query",
9807
+ "schema": {
9808
+ "type": "string"
9809
+ }
9810
+ },
9811
+ {
9812
+ "name": "publisher",
9813
+ "in": "query",
9814
+ "schema": {
9815
+ "type": "string"
9816
+ }
9817
+ }
9818
+ ],
9819
+ "responses": {
9820
+ "200": {
9821
+ "description": "Component detail"
9822
+ },
9823
+ "404": {
9824
+ "description": "Not found"
9825
+ }
9826
+ }
9827
+ }
9828
+ },
9829
+ "/api/catalog/{kind}/{id}/releases": {
9830
+ "get": {
9831
+ "operationId": "catalogListReleases",
9832
+ "summary": "List Magit package releases for a component",
9833
+ "tags": [
9834
+ "Catalog"
9835
+ ],
9836
+ "parameters": [
9837
+ {
9838
+ "name": "kind",
9839
+ "in": "path",
9840
+ "required": true,
9841
+ "schema": {
9842
+ "type": "string"
9843
+ }
9844
+ },
9845
+ {
9846
+ "name": "id",
9847
+ "in": "path",
9848
+ "required": true,
9849
+ "schema": {
9850
+ "type": "string"
9851
+ }
9852
+ },
9853
+ {
9854
+ "name": "publisher",
9855
+ "in": "query",
9856
+ "schema": {
9857
+ "type": "string"
9858
+ }
9859
+ },
9860
+ {
9861
+ "name": "maxCount",
9862
+ "in": "query",
9863
+ "schema": {
9864
+ "type": "integer"
9865
+ }
9866
+ }
9867
+ ],
9868
+ "responses": {
9869
+ "200": {
9870
+ "description": "Release list"
9871
+ }
9872
+ }
9873
+ }
9874
+ },
9875
+ "/api/metadata/packages": {
9876
+ "get": {
9877
+ "operationId": "metadataListPackages",
9878
+ "summary": "List packable identities and/or Magit catalog (source=)",
9879
+ "tags": [
9880
+ "Metadata"
9881
+ ],
9882
+ "parameters": [
9883
+ {
9884
+ "name": "kind",
9885
+ "in": "query",
9886
+ "schema": {
9887
+ "type": "string"
9888
+ }
9889
+ },
9890
+ {
9891
+ "name": "source",
9892
+ "in": "query",
9893
+ "description": "packable (default) | catalog | all",
9894
+ "schema": {
9895
+ "type": "string",
9896
+ "enum": [
9897
+ "packable",
9898
+ "catalog",
9899
+ "all"
9900
+ ]
9901
+ }
9902
+ }
9903
+ ],
9904
+ "responses": {
9905
+ "200": {
9906
+ "description": "Package identities"
9907
+ },
9908
+ "503": {
9909
+ "description": "Magit unavailable"
9910
+ }
9911
+ }
9912
+ }
9913
+ },
9914
+ "/api/metadata/packages/pack": {
9915
+ "post": {
9916
+ "operationId": "metadataPackPackage",
9917
+ "summary": "Pack installed metadata into Magit package catalog",
9918
+ "tags": [
9919
+ "Metadata"
9920
+ ],
9921
+ "requestBody": {
9922
+ "required": true,
9923
+ "content": {
9924
+ "application/json": {
9925
+ "schema": {
9926
+ "type": "object",
9927
+ "required": [
9928
+ "kind",
9929
+ "id",
9930
+ "message"
9931
+ ],
9932
+ "properties": {
9933
+ "kind": {
9934
+ "type": "string",
9935
+ "enum": [
9936
+ "agent",
9937
+ "connector",
9938
+ "service"
9939
+ ]
9940
+ },
9941
+ "id": {
9942
+ "type": "string"
9943
+ },
9944
+ "message": {
9945
+ "type": "string"
9946
+ },
9947
+ "mode": {
9948
+ "type": "string",
9949
+ "enum": [
9950
+ "narrow",
9951
+ "full"
9952
+ ]
9953
+ }
9954
+ }
9955
+ }
9956
+ }
9957
+ }
9958
+ },
9959
+ "responses": {
9960
+ "200": {
9961
+ "description": "Packed version",
9962
+ "content": {
9963
+ "application/json": {
9964
+ "schema": {
9965
+ "type": "object",
9966
+ "properties": {
9967
+ "packed": {
9968
+ "type": "boolean"
9969
+ },
9970
+ "kind": {
9971
+ "type": "string",
9972
+ "enum": [
9973
+ "agent",
9974
+ "connector",
9975
+ "service"
9976
+ ]
9977
+ },
9978
+ "id": {
9979
+ "type": "string"
9980
+ },
9981
+ "agentId": {
9982
+ "type": "string"
9983
+ },
9984
+ "version": {
9985
+ "type": "string"
9986
+ },
9987
+ "checksum": {
9988
+ "type": "string"
9989
+ },
9990
+ "reused": {
9991
+ "type": "boolean"
9992
+ },
9993
+ "published": {
9994
+ "type": "boolean",
9995
+ "description": "True when Magit typed-store pack was remotely published. Absent on flat catalog packs."
9996
+ },
9997
+ "storeId": {
9998
+ "type": "string",
9999
+ "description": "Typed-store id on Mode A packs. Sensitive recovery material — not for bulk inventory."
10000
+ },
10001
+ "packageTypeId": {
10002
+ "type": "string",
10003
+ "description": "Structure language id for the typed store (safe)."
10004
+ },
10005
+ "note": {
10006
+ "type": "string"
10007
+ },
10008
+ "mode": {
10009
+ "type": [
10010
+ "string",
10011
+ "null"
10012
+ ],
10013
+ "enum": [
10014
+ "narrow",
10015
+ "full",
10016
+ null
10017
+ ]
10018
+ },
10019
+ "bundled": {
10020
+ "type": "array",
10021
+ "items": {
10022
+ "type": "object",
10023
+ "properties": {
10024
+ "kind": {
10025
+ "type": "string"
10026
+ },
10027
+ "id": {
10028
+ "type": "string"
10029
+ },
10030
+ "version": {
10031
+ "type": "string"
10032
+ },
10033
+ "commit": {
10034
+ "type": "string"
10035
+ }
10036
+ }
10037
+ }
10038
+ }
10039
+ }
10040
+ }
10041
+ }
10042
+ }
10043
+ }
10044
+ }
10045
+ }
10046
+ },
10047
+ "/api/metadata/packages/restore": {
10048
+ "post": {
10049
+ "operationId": "metadataRestorePackage",
10050
+ "summary": "Fetch Magit package and install into org",
10051
+ "tags": [
10052
+ "Metadata"
10053
+ ],
10054
+ "parameters": [
10055
+ {
10056
+ "$ref": "#/components/parameters/XMemorixOrgId"
10057
+ }
10058
+ ],
10059
+ "responses": {
10060
+ "200": {
10061
+ "description": "Restore result"
10062
+ }
10063
+ }
10064
+ }
10065
+ },
10066
+ "/api/connector-ops/v1/orgs/{orgId}/connectors/{connectorId}/ops/{opId}/override": {
10067
+ "put": {
10068
+ "operationId": "connectorOpsPutOverride",
10069
+ "summary": "Set org-scoped connector-op override (MCO-01)",
10070
+ "tags": [
10071
+ "ConnectorOps"
10072
+ ],
10073
+ "parameters": [
10074
+ {
10075
+ "$ref": "#/components/parameters/XMemorixOrgId"
10076
+ },
10077
+ {
10078
+ "name": "orgId",
10079
+ "in": "path",
10080
+ "required": true,
10081
+ "schema": {
10082
+ "type": "string",
10083
+ "minLength": 1
10084
+ },
10085
+ "description": "Organization id (must match x-memorix-org-id header)"
10086
+ },
10087
+ {
10088
+ "name": "connectorId",
10089
+ "in": "path",
10090
+ "required": true,
10091
+ "schema": {
10092
+ "type": "string",
10093
+ "minLength": 1
10094
+ }
10095
+ },
10096
+ {
10097
+ "name": "opId",
10098
+ "in": "path",
10099
+ "required": true,
10100
+ "schema": {
10101
+ "type": "string",
10102
+ "minLength": 1
10103
+ }
10104
+ }
10105
+ ],
10106
+ "requestBody": {
10107
+ "required": true,
10108
+ "content": {
10109
+ "application/json": {
10110
+ "schema": {
10111
+ "$ref": "#/components/schemas/McoSetOpOverride"
10112
+ }
10113
+ }
10114
+ }
10115
+ },
10116
+ "responses": {
10117
+ "200": {
10118
+ "description": "Upserted override",
10119
+ "content": {
10120
+ "application/json": {
10121
+ "schema": {
10122
+ "$ref": "#/components/schemas/McoOpOverride"
10123
+ }
10124
+ }
10125
+ }
10126
+ },
10127
+ "400": {
10128
+ "description": "Validation / scope invalid / payload rejected",
10129
+ "content": {
10130
+ "application/json": {
10131
+ "schema": {
10132
+ "$ref": "#/components/schemas/ErrorEnvelope"
10133
+ }
10134
+ }
10135
+ }
10136
+ },
10137
+ "403": {
10138
+ "description": "Path orgId mismatches header scope",
10139
+ "content": {
10140
+ "application/json": {
10141
+ "schema": {
10142
+ "$ref": "#/components/schemas/ErrorEnvelope"
10143
+ }
10144
+ }
10145
+ }
10146
+ },
10147
+ "404": {
10148
+ "description": "Not found",
10149
+ "content": {
10150
+ "application/json": {
10151
+ "schema": {
10152
+ "$ref": "#/components/schemas/ErrorEnvelope"
10153
+ }
10154
+ }
10155
+ }
10156
+ },
10157
+ "503": {
10158
+ "description": "Durable store required",
10159
+ "content": {
10160
+ "application/json": {
10161
+ "schema": {
10162
+ "$ref": "#/components/schemas/ErrorEnvelope"
10163
+ }
10164
+ }
10165
+ }
10166
+ }
10167
+ }
10168
+ },
10169
+ "get": {
10170
+ "operationId": "connectorOpsGetOverride",
10171
+ "summary": "Get one override (404 when absent/expired)",
10172
+ "tags": [
10173
+ "ConnectorOps"
10174
+ ],
10175
+ "parameters": [
10176
+ {
10177
+ "$ref": "#/components/parameters/XMemorixOrgId"
10178
+ },
10179
+ {
10180
+ "name": "orgId",
10181
+ "in": "path",
10182
+ "required": true,
10183
+ "schema": {
10184
+ "type": "string",
10185
+ "minLength": 1
10186
+ },
10187
+ "description": "Organization id (must match x-memorix-org-id header)"
10188
+ },
10189
+ {
10190
+ "name": "connectorId",
10191
+ "in": "path",
10192
+ "required": true,
10193
+ "schema": {
10194
+ "type": "string",
10195
+ "minLength": 1
10196
+ }
10197
+ },
10198
+ {
10199
+ "name": "opId",
10200
+ "in": "path",
10201
+ "required": true,
10202
+ "schema": {
10203
+ "type": "string",
10204
+ "minLength": 1
10205
+ }
10206
+ }
10207
+ ],
10208
+ "responses": {
10209
+ "200": {
10210
+ "description": "Override",
10211
+ "content": {
10212
+ "application/json": {
10213
+ "schema": {
10214
+ "$ref": "#/components/schemas/McoOpOverride"
10215
+ }
10216
+ }
10217
+ }
10218
+ },
10219
+ "400": {
10220
+ "description": "Validation / scope invalid / payload rejected",
10221
+ "content": {
10222
+ "application/json": {
10223
+ "schema": {
10224
+ "$ref": "#/components/schemas/ErrorEnvelope"
10225
+ }
10226
+ }
10227
+ }
10228
+ },
10229
+ "403": {
10230
+ "description": "Path orgId mismatches header scope",
10231
+ "content": {
10232
+ "application/json": {
10233
+ "schema": {
10234
+ "$ref": "#/components/schemas/ErrorEnvelope"
10235
+ }
10236
+ }
10237
+ }
10238
+ },
10239
+ "404": {
10240
+ "description": "Not found",
10241
+ "content": {
10242
+ "application/json": {
10243
+ "schema": {
10244
+ "$ref": "#/components/schemas/ErrorEnvelope"
10245
+ }
10246
+ }
10247
+ }
10248
+ },
10249
+ "503": {
10250
+ "description": "Durable store required",
10251
+ "content": {
10252
+ "application/json": {
10253
+ "schema": {
10254
+ "$ref": "#/components/schemas/ErrorEnvelope"
10255
+ }
10256
+ }
10257
+ }
10258
+ }
10259
+ }
10260
+ },
10261
+ "delete": {
10262
+ "operationId": "connectorOpsClearOverride",
10263
+ "summary": "Clear override (re-enable op)",
10264
+ "tags": [
10265
+ "ConnectorOps"
10266
+ ],
10267
+ "parameters": [
10268
+ {
10269
+ "$ref": "#/components/parameters/XMemorixOrgId"
10270
+ },
10271
+ {
10272
+ "name": "orgId",
10273
+ "in": "path",
10274
+ "required": true,
10275
+ "schema": {
10276
+ "type": "string",
10277
+ "minLength": 1
10278
+ },
10279
+ "description": "Organization id (must match x-memorix-org-id header)"
10280
+ },
10281
+ {
10282
+ "name": "connectorId",
10283
+ "in": "path",
10284
+ "required": true,
10285
+ "schema": {
10286
+ "type": "string",
10287
+ "minLength": 1
10288
+ }
10289
+ },
10290
+ {
10291
+ "name": "opId",
10292
+ "in": "path",
10293
+ "required": true,
10294
+ "schema": {
10295
+ "type": "string",
10296
+ "minLength": 1
10297
+ }
10298
+ }
10299
+ ],
10300
+ "responses": {
10301
+ "204": {
10302
+ "description": "Cleared"
10303
+ },
10304
+ "400": {
10305
+ "description": "Validation / scope invalid / payload rejected",
10306
+ "content": {
10307
+ "application/json": {
10308
+ "schema": {
10309
+ "$ref": "#/components/schemas/ErrorEnvelope"
10310
+ }
10311
+ }
10312
+ }
10313
+ },
10314
+ "403": {
10315
+ "description": "Path orgId mismatches header scope",
10316
+ "content": {
10317
+ "application/json": {
10318
+ "schema": {
10319
+ "$ref": "#/components/schemas/ErrorEnvelope"
10320
+ }
10321
+ }
10322
+ }
10323
+ },
10324
+ "404": {
10325
+ "description": "Not found",
10326
+ "content": {
10327
+ "application/json": {
10328
+ "schema": {
10329
+ "$ref": "#/components/schemas/ErrorEnvelope"
10330
+ }
10331
+ }
10332
+ }
10333
+ },
10334
+ "503": {
10335
+ "description": "Durable store required",
10336
+ "content": {
10337
+ "application/json": {
10338
+ "schema": {
10339
+ "$ref": "#/components/schemas/ErrorEnvelope"
10340
+ }
10341
+ }
10342
+ }
10343
+ }
10344
+ }
10345
+ }
10346
+ },
10347
+ "/api/connector-ops/v1/orgs/{orgId}/connectors/{connectorId}/overrides": {
10348
+ "get": {
10349
+ "operationId": "connectorOpsListOverrides",
10350
+ "summary": "List active overrides for a connector",
10351
+ "tags": [
10352
+ "ConnectorOps"
10353
+ ],
10354
+ "parameters": [
10355
+ {
10356
+ "$ref": "#/components/parameters/XMemorixOrgId"
10357
+ },
10358
+ {
10359
+ "name": "orgId",
10360
+ "in": "path",
10361
+ "required": true,
10362
+ "schema": {
10363
+ "type": "string",
10364
+ "minLength": 1
10365
+ },
10366
+ "description": "Organization id (must match x-memorix-org-id header)"
10367
+ },
10368
+ {
10369
+ "name": "connectorId",
10370
+ "in": "path",
10371
+ "required": true,
10372
+ "schema": {
10373
+ "type": "string",
10374
+ "minLength": 1
10375
+ }
10376
+ }
10377
+ ],
10378
+ "responses": {
10379
+ "200": {
10380
+ "description": "Override list",
10381
+ "content": {
10382
+ "application/json": {
10383
+ "schema": {
10384
+ "type": "object",
10385
+ "properties": {
10386
+ "orgId": {
10387
+ "type": "string"
10388
+ },
10389
+ "connectorId": {
10390
+ "type": "string"
10391
+ },
10392
+ "overrides": {
10393
+ "type": "array",
10394
+ "items": {
10395
+ "$ref": "#/components/schemas/McoOpOverride"
10396
+ }
10397
+ }
10398
+ }
10399
+ }
10400
+ }
10401
+ }
10402
+ },
10403
+ "400": {
10404
+ "description": "Validation / scope invalid / payload rejected",
10405
+ "content": {
10406
+ "application/json": {
10407
+ "schema": {
10408
+ "$ref": "#/components/schemas/ErrorEnvelope"
10409
+ }
10410
+ }
10411
+ }
10412
+ },
10413
+ "403": {
10414
+ "description": "Path orgId mismatches header scope",
10415
+ "content": {
10416
+ "application/json": {
10417
+ "schema": {
10418
+ "$ref": "#/components/schemas/ErrorEnvelope"
10419
+ }
10420
+ }
10421
+ }
10422
+ },
10423
+ "404": {
10424
+ "description": "Not found",
10425
+ "content": {
10426
+ "application/json": {
10427
+ "schema": {
10428
+ "$ref": "#/components/schemas/ErrorEnvelope"
10429
+ }
10430
+ }
10431
+ }
10432
+ },
10433
+ "503": {
10434
+ "description": "Durable store required",
10435
+ "content": {
10436
+ "application/json": {
10437
+ "schema": {
10438
+ "$ref": "#/components/schemas/ErrorEnvelope"
10439
+ }
10440
+ }
10441
+ }
10442
+ }
10443
+ }
10444
+ }
10445
+ },
10446
+ "/api/connector-ops/v1/orgs/{orgId}/connectors/{connectorId}/ops/{opId}/attempts": {
10447
+ "post": {
10448
+ "operationId": "connectorOpsRecordAttempt",
10449
+ "summary": "Record one op attempt (MCO-02)",
10450
+ "tags": [
10451
+ "ConnectorOps"
10452
+ ],
10453
+ "parameters": [
10454
+ {
10455
+ "$ref": "#/components/parameters/XMemorixOrgId"
10456
+ },
10457
+ {
10458
+ "name": "orgId",
10459
+ "in": "path",
10460
+ "required": true,
10461
+ "schema": {
10462
+ "type": "string",
10463
+ "minLength": 1
10464
+ },
10465
+ "description": "Organization id (must match x-memorix-org-id header)"
10466
+ },
10467
+ {
10468
+ "name": "connectorId",
10469
+ "in": "path",
10470
+ "required": true,
10471
+ "schema": {
10472
+ "type": "string",
10473
+ "minLength": 1
10474
+ }
10475
+ },
10476
+ {
10477
+ "name": "opId",
10478
+ "in": "path",
10479
+ "required": true,
10480
+ "schema": {
10481
+ "type": "string",
10482
+ "minLength": 1
10483
+ }
10484
+ }
10485
+ ],
10486
+ "requestBody": {
10487
+ "required": true,
10488
+ "content": {
10489
+ "application/json": {
10490
+ "schema": {
10491
+ "$ref": "#/components/schemas/McoOpAttemptInput"
10492
+ }
10493
+ }
10494
+ }
10495
+ },
10496
+ "responses": {
10497
+ "201": {
10498
+ "description": "Recorded",
10499
+ "content": {
10500
+ "application/json": {
10501
+ "schema": {
10502
+ "$ref": "#/components/schemas/McoOpAttempt"
10503
+ }
10504
+ }
10505
+ }
10506
+ },
10507
+ "400": {
10508
+ "description": "Validation / scope invalid / payload rejected",
10509
+ "content": {
10510
+ "application/json": {
10511
+ "schema": {
10512
+ "$ref": "#/components/schemas/ErrorEnvelope"
10513
+ }
10514
+ }
10515
+ }
10516
+ },
10517
+ "403": {
10518
+ "description": "Path orgId mismatches header scope",
10519
+ "content": {
10520
+ "application/json": {
10521
+ "schema": {
10522
+ "$ref": "#/components/schemas/ErrorEnvelope"
10523
+ }
10524
+ }
10525
+ }
10526
+ },
10527
+ "404": {
10528
+ "description": "Not found",
10529
+ "content": {
10530
+ "application/json": {
10531
+ "schema": {
10532
+ "$ref": "#/components/schemas/ErrorEnvelope"
10533
+ }
10534
+ }
10535
+ }
10536
+ },
10537
+ "503": {
10538
+ "description": "Durable store required",
10539
+ "content": {
10540
+ "application/json": {
10541
+ "schema": {
10542
+ "$ref": "#/components/schemas/ErrorEnvelope"
10543
+ }
10544
+ }
10545
+ }
10546
+ }
10547
+ }
10548
+ },
10549
+ "get": {
10550
+ "operationId": "connectorOpsListAttempts",
10551
+ "summary": "List recent attempts for an op",
10552
+ "tags": [
10553
+ "ConnectorOps"
10554
+ ],
10555
+ "parameters": [
10556
+ {
10557
+ "$ref": "#/components/parameters/XMemorixOrgId"
10558
+ },
10559
+ {
10560
+ "name": "orgId",
10561
+ "in": "path",
10562
+ "required": true,
10563
+ "schema": {
10564
+ "type": "string",
10565
+ "minLength": 1
10566
+ },
10567
+ "description": "Organization id (must match x-memorix-org-id header)"
10568
+ },
10569
+ {
10570
+ "name": "connectorId",
10571
+ "in": "path",
10572
+ "required": true,
10573
+ "schema": {
10574
+ "type": "string",
10575
+ "minLength": 1
10576
+ }
10577
+ },
10578
+ {
10579
+ "name": "opId",
10580
+ "in": "path",
10581
+ "required": true,
10582
+ "schema": {
10583
+ "type": "string",
10584
+ "minLength": 1
10585
+ }
10586
+ },
10587
+ {
10588
+ "name": "limit",
10589
+ "in": "query",
10590
+ "schema": {
10591
+ "type": "integer",
10592
+ "minimum": 1,
10593
+ "maximum": 200,
10594
+ "default": 50
10595
+ }
10596
+ }
10597
+ ],
10598
+ "responses": {
10599
+ "200": {
10600
+ "description": "Attempts",
10601
+ "content": {
10602
+ "application/json": {
10603
+ "schema": {
10604
+ "type": "object",
10605
+ "properties": {
10606
+ "orgId": {
10607
+ "type": "string"
10608
+ },
10609
+ "connectorId": {
10610
+ "type": "string"
10611
+ },
10612
+ "opId": {
10613
+ "type": "string"
10614
+ },
10615
+ "limit": {
10616
+ "type": "integer"
10617
+ },
10618
+ "attempts": {
10619
+ "type": "array",
10620
+ "items": {
10621
+ "$ref": "#/components/schemas/McoOpAttempt"
10622
+ }
10623
+ }
10624
+ }
10625
+ }
10626
+ }
10627
+ }
10628
+ },
10629
+ "400": {
10630
+ "description": "Validation / scope invalid / payload rejected",
10631
+ "content": {
10632
+ "application/json": {
10633
+ "schema": {
10634
+ "$ref": "#/components/schemas/ErrorEnvelope"
10635
+ }
10636
+ }
10637
+ }
10638
+ },
10639
+ "403": {
10640
+ "description": "Path orgId mismatches header scope",
10641
+ "content": {
10642
+ "application/json": {
10643
+ "schema": {
10644
+ "$ref": "#/components/schemas/ErrorEnvelope"
10645
+ }
10646
+ }
10647
+ }
10648
+ },
10649
+ "404": {
10650
+ "description": "Not found",
10651
+ "content": {
10652
+ "application/json": {
10653
+ "schema": {
10654
+ "$ref": "#/components/schemas/ErrorEnvelope"
10655
+ }
10656
+ }
10657
+ }
10658
+ },
10659
+ "503": {
10660
+ "description": "Durable store required",
10661
+ "content": {
10662
+ "application/json": {
10663
+ "schema": {
10664
+ "$ref": "#/components/schemas/ErrorEnvelope"
10665
+ }
10666
+ }
10667
+ }
10668
+ }
10669
+ }
10670
+ }
10671
+ },
10672
+ "/api/connector-ops/v1/orgs/{orgId}/connectors/{connectorId}/ops/{opId}/stats": {
10673
+ "get": {
10674
+ "operationId": "connectorOpsGetStats",
10675
+ "summary": "Get aggregate stats for one op",
10676
+ "tags": [
10677
+ "ConnectorOps"
10678
+ ],
10679
+ "parameters": [
10680
+ {
10681
+ "$ref": "#/components/parameters/XMemorixOrgId"
10682
+ },
10683
+ {
10684
+ "name": "orgId",
10685
+ "in": "path",
10686
+ "required": true,
10687
+ "schema": {
10688
+ "type": "string",
10689
+ "minLength": 1
10690
+ },
10691
+ "description": "Organization id (must match x-memorix-org-id header)"
10692
+ },
10693
+ {
10694
+ "name": "connectorId",
10695
+ "in": "path",
10696
+ "required": true,
10697
+ "schema": {
10698
+ "type": "string",
10699
+ "minLength": 1
10700
+ }
10701
+ },
10702
+ {
10703
+ "name": "opId",
10704
+ "in": "path",
10705
+ "required": true,
10706
+ "schema": {
10707
+ "type": "string",
10708
+ "minLength": 1
10709
+ }
10710
+ }
10711
+ ],
10712
+ "responses": {
10713
+ "200": {
10714
+ "description": "Stats",
10715
+ "content": {
10716
+ "application/json": {
10717
+ "schema": {
10718
+ "$ref": "#/components/schemas/McoOpStats"
10719
+ }
10720
+ }
10721
+ }
10722
+ },
10723
+ "400": {
10724
+ "description": "Validation / scope invalid / payload rejected",
10725
+ "content": {
10726
+ "application/json": {
10727
+ "schema": {
10728
+ "$ref": "#/components/schemas/ErrorEnvelope"
10729
+ }
10730
+ }
10731
+ }
10732
+ },
10733
+ "403": {
10734
+ "description": "Path orgId mismatches header scope",
10735
+ "content": {
10736
+ "application/json": {
10737
+ "schema": {
10738
+ "$ref": "#/components/schemas/ErrorEnvelope"
10739
+ }
10740
+ }
10741
+ }
10742
+ },
10743
+ "404": {
10744
+ "description": "Not found",
10745
+ "content": {
10746
+ "application/json": {
10747
+ "schema": {
10748
+ "$ref": "#/components/schemas/ErrorEnvelope"
10749
+ }
10750
+ }
10751
+ }
10752
+ },
10753
+ "503": {
10754
+ "description": "Durable store required",
10755
+ "content": {
10756
+ "application/json": {
10757
+ "schema": {
10758
+ "$ref": "#/components/schemas/ErrorEnvelope"
10759
+ }
10760
+ }
10761
+ }
10762
+ }
10763
+ }
10764
+ }
10765
+ },
10766
+ "/api/connector-ops/v1/orgs/{orgId}/connectors/{connectorId}/stats": {
10767
+ "get": {
10768
+ "operationId": "connectorOpsListStats",
10769
+ "summary": "List stats for all ops of a connector",
10770
+ "tags": [
10771
+ "ConnectorOps"
10772
+ ],
10773
+ "parameters": [
10774
+ {
10775
+ "$ref": "#/components/parameters/XMemorixOrgId"
10776
+ },
10777
+ {
10778
+ "name": "orgId",
10779
+ "in": "path",
10780
+ "required": true,
10781
+ "schema": {
10782
+ "type": "string",
10783
+ "minLength": 1
10784
+ },
10785
+ "description": "Organization id (must match x-memorix-org-id header)"
10786
+ },
10787
+ {
10788
+ "name": "connectorId",
10789
+ "in": "path",
10790
+ "required": true,
10791
+ "schema": {
10792
+ "type": "string",
10793
+ "minLength": 1
10794
+ }
10795
+ }
10796
+ ],
10797
+ "responses": {
10798
+ "200": {
10799
+ "description": "Stats list",
10800
+ "content": {
10801
+ "application/json": {
10802
+ "schema": {
10803
+ "type": "object",
10804
+ "properties": {
10805
+ "orgId": {
10806
+ "type": "string"
10807
+ },
10808
+ "connectorId": {
10809
+ "type": "string"
10810
+ },
10811
+ "stats": {
10812
+ "type": "array",
10813
+ "items": {
10814
+ "$ref": "#/components/schemas/McoOpStats"
10815
+ }
10816
+ }
10817
+ }
10818
+ }
10819
+ }
10820
+ }
10821
+ },
10822
+ "400": {
10823
+ "description": "Validation / scope invalid / payload rejected",
10824
+ "content": {
10825
+ "application/json": {
10826
+ "schema": {
10827
+ "$ref": "#/components/schemas/ErrorEnvelope"
10828
+ }
10829
+ }
10830
+ }
10831
+ },
10832
+ "403": {
10833
+ "description": "Path orgId mismatches header scope",
10834
+ "content": {
10835
+ "application/json": {
10836
+ "schema": {
10837
+ "$ref": "#/components/schemas/ErrorEnvelope"
10838
+ }
10839
+ }
10840
+ }
10841
+ },
10842
+ "404": {
10843
+ "description": "Not found",
10844
+ "content": {
10845
+ "application/json": {
10846
+ "schema": {
10847
+ "$ref": "#/components/schemas/ErrorEnvelope"
10848
+ }
10849
+ }
10850
+ }
10851
+ },
10852
+ "503": {
10853
+ "description": "Durable store required",
10854
+ "content": {
10855
+ "application/json": {
10856
+ "schema": {
10857
+ "$ref": "#/components/schemas/ErrorEnvelope"
10858
+ }
10859
+ }
10860
+ }
10861
+ }
10862
+ }
10863
+ }
10864
+ }
10865
+ },
10866
+ "components": {
10867
+ "parameters": {
10868
+ "XMemorixOrgId": {
10869
+ "name": "x-memorix-org-id",
10870
+ "in": "header",
10871
+ "required": true,
10872
+ "schema": {
10873
+ "type": "string",
10874
+ "minLength": 1
10875
+ },
10876
+ "description": "Organization / data-universe id"
10877
+ },
10878
+ "XMemorixAgentIds": {
10879
+ "name": "x-memorix-agent-ids",
10880
+ "in": "header",
10881
+ "required": true,
10882
+ "schema": {
10883
+ "type": "string",
10884
+ "minLength": 1
10885
+ },
10886
+ "description": "Comma-separated agentIds for effective metadata",
10887
+ "example": "ops,fieldstone"
10888
+ }
10889
+ },
10890
+ "schemas": {
10891
+ "MemorixScope": {
10892
+ "type": "object",
10893
+ "required": [
10894
+ "orgId",
10895
+ "agentIds"
10896
+ ],
10897
+ "additionalProperties": false,
10898
+ "properties": {
10899
+ "orgId": {
10900
+ "type": "string",
10901
+ "minLength": 1,
10902
+ "description": "Data universe / org isolation key"
10903
+ },
10904
+ "agentIds": {
10905
+ "type": "array",
10906
+ "items": {
10907
+ "type": "string",
10908
+ "minLength": 1
10909
+ },
10910
+ "minItems": 1,
10911
+ "uniqueItems": true,
10912
+ "description": "Effective metadata agent chain (canonicalized/sorted)"
10913
+ }
10914
+ },
10915
+ "example": {
10916
+ "orgId": "acme",
10917
+ "agentIds": [
10918
+ "opx",
10919
+ "fieldstone"
10920
+ ]
10921
+ }
10922
+ },
10923
+ "ConnectorCatalogEntry": {
10924
+ "type": "object",
10925
+ "required": [
10926
+ "id",
10927
+ "version",
10928
+ "protocol",
10929
+ "enabled",
10930
+ "framework",
10931
+ "displayName",
10932
+ "capabilities",
10933
+ "isSource",
10934
+ "isTarget",
10935
+ "origin"
10936
+ ],
10937
+ "properties": {
10938
+ "id": {
10939
+ "type": "string",
10940
+ "description": "Connector package id (connectorRef)"
10941
+ },
10942
+ "version": {
10943
+ "type": "string"
10944
+ },
10945
+ "protocol": {
10946
+ "type": "string",
10947
+ "example": "memorix-connector/1"
10948
+ },
10949
+ "enabled": {
10950
+ "type": "boolean"
10951
+ },
10952
+ "framework": {
10953
+ "type": "boolean"
10954
+ },
10955
+ "displayName": {
10956
+ "type": "string"
10957
+ },
10958
+ "capabilities": {
10959
+ "type": "object",
10960
+ "additionalProperties": true
10961
+ },
10962
+ "connectorRole": {
10963
+ "type": "string",
10964
+ "enum": [
10965
+ "source",
10966
+ "target",
10967
+ "both"
10968
+ ],
10969
+ "nullable": true,
10970
+ "description": "Authoritative direction when set (prefer over id suffix)."
10971
+ },
10972
+ "isSource": {
10973
+ "type": "boolean"
10974
+ },
10975
+ "isTarget": {
10976
+ "type": "boolean"
10977
+ },
10978
+ "origin": {
10979
+ "type": "string",
10980
+ "enum": [
10981
+ "registry",
10982
+ "builtin",
10983
+ "generic-connectors"
10984
+ ]
10985
+ },
10986
+ "hostBaseUrl": {
10987
+ "type": "string",
10988
+ "description": "MGC host base when origin is generic-connectors"
10989
+ },
10990
+ "remoteHosting": {
10991
+ "type": "boolean"
10992
+ },
10993
+ "unavailableReason": {
10994
+ "type": "string",
10995
+ "description": "Set when the row is listed but not usable (e.g. host URL unset for stubs)"
10996
+ },
10997
+ "definitionHash": {
10998
+ "type": "string",
10999
+ "description": "Pinned hash from host catalog when available"
11000
+ },
11001
+ "description": {
11002
+ "type": "string"
11003
+ },
11004
+ "purpose": {
11005
+ "type": "string"
11006
+ },
11007
+ "classification": {
11008
+ "type": "string",
11009
+ "description": "Domain classification from pack catalog (e.g. cybersecurity)"
11010
+ },
11011
+ "tags": {
11012
+ "type": "array",
11013
+ "items": {
11014
+ "type": "string"
11015
+ }
11016
+ },
11017
+ "usageModel": {
11018
+ "type": "string",
11019
+ "enum": [
11020
+ "stream",
11021
+ "service"
11022
+ ],
11023
+ "description": "stream = continuous sync; service = on-demand enrichment. Protocol role remains source|target only."
11024
+ }
11025
+ }
11026
+ },
11027
+ "MemorixIdentifier": {
11028
+ "type": "object",
11029
+ "required": [
11030
+ "kind",
11031
+ "value"
11032
+ ],
11033
+ "properties": {
11034
+ "kind": {
11035
+ "type": "string"
11036
+ },
11037
+ "value": {
11038
+ "type": "string"
11039
+ },
11040
+ "issuer": {
11041
+ "type": "string"
11042
+ },
11043
+ "normalizedValue": {
11044
+ "type": "string"
11045
+ }
11046
+ }
11047
+ },
11048
+ "MemorixRecordV2": {
11049
+ "type": "object",
11050
+ "required": [
11051
+ "format",
11052
+ "recordId",
11053
+ "revision",
11054
+ "objectType",
11055
+ "contentType",
11056
+ "dataCategory",
11057
+ "concept",
11058
+ "data",
11059
+ "_system"
11060
+ ],
11061
+ "properties": {
11062
+ "format": {
11063
+ "type": "string",
11064
+ "enum": [
11065
+ "memorix-record/2"
11066
+ ]
11067
+ },
11068
+ "recordId": {
11069
+ "type": "string"
11070
+ },
11071
+ "revision": {
11072
+ "type": "integer",
11073
+ "minimum": 1
11074
+ },
11075
+ "objectType": {
11076
+ "type": "string"
11077
+ },
11078
+ "contentType": {
11079
+ "type": "string"
11080
+ },
11081
+ "dataCategory": {
11082
+ "type": "string",
11083
+ "enum": [
11084
+ "entity",
11085
+ "event",
11086
+ "knowledge"
11087
+ ]
11088
+ },
11089
+ "concept": {
11090
+ "type": "object",
11091
+ "required": [
11092
+ "title",
11093
+ "identifiers"
11094
+ ],
11095
+ "properties": {
11096
+ "title": {
11097
+ "type": "string"
11098
+ },
11099
+ "identifiers": {
11100
+ "type": "object",
11101
+ "required": [
11102
+ "primary"
11103
+ ],
11104
+ "properties": {
11105
+ "primary": {
11106
+ "$ref": "#/components/schemas/MemorixIdentifier"
11107
+ },
11108
+ "alternates": {
11109
+ "type": "array",
11110
+ "items": {
11111
+ "$ref": "#/components/schemas/MemorixIdentifier"
11112
+ }
11113
+ }
11114
+ }
11115
+ }
11116
+ }
11117
+ },
11118
+ "data": {
11119
+ "type": "object",
11120
+ "additionalProperties": true
11121
+ },
11122
+ "analytics": {
9739
11123
  "type": "object",
9740
11124
  "additionalProperties": true
9741
11125
  },
@@ -11439,6 +12823,201 @@
11439
12823
  "additionalProperties": true
11440
12824
  }
11441
12825
  }
12826
+ },
12827
+ "McoSetOpOverride": {
12828
+ "type": "object",
12829
+ "required": [
12830
+ "enabled"
12831
+ ],
12832
+ "properties": {
12833
+ "enabled": {
12834
+ "type": "boolean"
12835
+ },
12836
+ "reason": {
12837
+ "type": "string",
12838
+ "description": "Required non-empty when enabled is false"
12839
+ },
12840
+ "updatedBy": {
12841
+ "type": "string"
12842
+ },
12843
+ "expiresAt": {
12844
+ "type": "string",
12845
+ "nullable": true,
12846
+ "format": "date-time"
12847
+ }
12848
+ }
12849
+ },
12850
+ "McoOpOverride": {
12851
+ "type": "object",
12852
+ "required": [
12853
+ "orgId",
12854
+ "connectorId",
12855
+ "opId",
12856
+ "enabled",
12857
+ "reason",
12858
+ "updatedAt"
12859
+ ],
12860
+ "properties": {
12861
+ "orgId": {
12862
+ "type": "string"
12863
+ },
12864
+ "connectorId": {
12865
+ "type": "string"
12866
+ },
12867
+ "opId": {
12868
+ "type": "string"
12869
+ },
12870
+ "enabled": {
12871
+ "type": "boolean"
12872
+ },
12873
+ "reason": {
12874
+ "type": "string"
12875
+ },
12876
+ "updatedAt": {
12877
+ "type": "string",
12878
+ "format": "date-time"
12879
+ },
12880
+ "updatedBy": {
12881
+ "type": "string"
12882
+ },
12883
+ "expiresAt": {
12884
+ "type": "string",
12885
+ "nullable": true,
12886
+ "format": "date-time"
12887
+ }
12888
+ }
12889
+ },
12890
+ "McoOpAttemptInput": {
12891
+ "type": "object",
12892
+ "required": [
12893
+ "at",
12894
+ "status"
12895
+ ],
12896
+ "properties": {
12897
+ "at": {
12898
+ "type": "string",
12899
+ "format": "date-time"
12900
+ },
12901
+ "status": {
12902
+ "type": "string",
12903
+ "enum": [
12904
+ "ok",
12905
+ "fail",
12906
+ "skip",
12907
+ "disabled"
12908
+ ]
12909
+ },
12910
+ "httpStatus": {
12911
+ "type": "integer"
12912
+ },
12913
+ "error": {
12914
+ "type": "string"
12915
+ },
12916
+ "durationMs": {
12917
+ "type": "number"
12918
+ },
12919
+ "runId": {
12920
+ "type": "string"
12921
+ },
12922
+ "source": {
12923
+ "type": "string"
12924
+ }
12925
+ }
12926
+ },
12927
+ "McoOpAttempt": {
12928
+ "allOf": [
12929
+ {
12930
+ "$ref": "#/components/schemas/McoOpAttemptInput"
12931
+ },
12932
+ {
12933
+ "type": "object",
12934
+ "required": [
12935
+ "orgId",
12936
+ "connectorId",
12937
+ "opId",
12938
+ "attemptId"
12939
+ ],
12940
+ "properties": {
12941
+ "orgId": {
12942
+ "type": "string"
12943
+ },
12944
+ "connectorId": {
12945
+ "type": "string"
12946
+ },
12947
+ "opId": {
12948
+ "type": "string"
12949
+ },
12950
+ "attemptId": {
12951
+ "type": "string"
12952
+ }
12953
+ }
12954
+ }
12955
+ ]
12956
+ },
12957
+ "McoOpStats": {
12958
+ "type": "object",
12959
+ "required": [
12960
+ "orgId",
12961
+ "connectorId",
12962
+ "opId",
12963
+ "attemptCount",
12964
+ "okCount",
12965
+ "failCount",
12966
+ "skipCount",
12967
+ "disabledCount"
12968
+ ],
12969
+ "properties": {
12970
+ "orgId": {
12971
+ "type": "string"
12972
+ },
12973
+ "connectorId": {
12974
+ "type": "string"
12975
+ },
12976
+ "opId": {
12977
+ "type": "string"
12978
+ },
12979
+ "attemptCount": {
12980
+ "type": "integer"
12981
+ },
12982
+ "okCount": {
12983
+ "type": "integer"
12984
+ },
12985
+ "failCount": {
12986
+ "type": "integer"
12987
+ },
12988
+ "skipCount": {
12989
+ "type": "integer"
12990
+ },
12991
+ "disabledCount": {
12992
+ "type": "integer"
12993
+ },
12994
+ "lastSuccessAt": {
12995
+ "type": "string",
12996
+ "nullable": true,
12997
+ "format": "date-time"
12998
+ },
12999
+ "lastFailAt": {
13000
+ "type": "string",
13001
+ "nullable": true,
13002
+ "format": "date-time"
13003
+ },
13004
+ "lastAttemptAt": {
13005
+ "type": "string",
13006
+ "nullable": true,
13007
+ "format": "date-time"
13008
+ },
13009
+ "lastStatus": {
13010
+ "type": "string",
13011
+ "nullable": true
13012
+ },
13013
+ "recent": {
13014
+ "type": "array",
13015
+ "items": {
13016
+ "type": "object",
13017
+ "additionalProperties": true
13018
+ }
13019
+ }
13020
+ }
11442
13021
  }
11443
13022
  }
11444
13023
  }