@1claw/openapi-spec 0.61.8 → 0.61.10

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 (3) hide show
  1. package/openapi.json +344 -1
  2. package/openapi.yaml +219 -1
  3. package/package.json +1 -1
package/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.1.0",
3
3
  "info": {
4
4
  "title": "1Claw API",
5
- "version": "0.61.8",
5
+ "version": "0.61.10",
6
6
  "description": "Secure secret management for AI agents. Provides vaults, secrets,\npolicy-based access control, agent identity, Intents API,\nsharing, billing, and audit logging. Automations (workflow_spec,\nwebhook tokens, event triggers, Assist), cloud runtimes with\ninteractive shell sessions, agent memory, and discovery.\n\n## Domains\n\n`api.1claw.co` is canonical: it is the OIDC issuer, the `aud` the API\nmints, and the first entry in `servers` — a generated client takes its\nbase URL from there, and the previous ordering pointed every SDK at the\ndomain the issuer had already left. `api.1claw.xyz` still answers and is\nstill accepted on token validation, because tokens minted before the\nmove carry it; it is never minted now.\n\nOne deliberate exception: the Shroud attestation identity token is\nrequested from GCP with `audience: https://api.1claw.xyz`, so\n`/v1/shroud/attestation` reports that as its `expected_audience`. That\nis accurate rather than stale — the audience is a verification contract\nwith anyone already checking the token, and moving it is a breaking\nchange for them, not a rename.\n\nAll endpoints require JWT Bearer authentication unless marked with\n`security: []`.\n",
7
7
  "contact": {
8
8
  "email": "ops@1claw.co"
@@ -24669,6 +24669,201 @@
24669
24669
  }
24670
24670
  }
24671
24671
  },
24672
+ "/v1/platform/connections/{connection_id}/otel/topology": {
24673
+ "get": {
24674
+ "tags": [
24675
+ "Platform",
24676
+ "Observability"
24677
+ ],
24678
+ "summary": "Topology for one connection's agents",
24679
+ "description": "The same graph as `/v1/otel/topology`, restricted to what this connection's agents reach: the agents, the policies they hold, the vaults those grant, the chains they sign on and the systems they call. Restricted before the 500-node cap, so a large org's cap cannot cut the connection's own agents out. Walking is directed (agent → policy → vault), so a vault shared with another tenant's agent does not reveal that agent.\n\nA `plt_` key sees one connection's agents, never the end-user's org: that org may hold agents from other platforms or the user's own. The set is agents attributed to the connection plus the ones listed on it, constrained to the connection's org. A connection that does not belong to the calling app is a 404.",
24680
+ "operationId": "get_platform_connection_otel_topology",
24681
+ "parameters": [
24682
+ {
24683
+ "name": "connection_id",
24684
+ "in": "path",
24685
+ "required": true,
24686
+ "schema": {
24687
+ "type": "string",
24688
+ "format": "uuid"
24689
+ }
24690
+ }
24691
+ ],
24692
+ "responses": {
24693
+ "200": {
24694
+ "description": "Nodes and edges reachable from the connection's agents",
24695
+ "content": {
24696
+ "application/json": {
24697
+ "schema": {
24698
+ "$ref": "#/paths/~1v1~1otel~1topology/get/responses/200/content/application~1json/schema"
24699
+ }
24700
+ }
24701
+ }
24702
+ },
24703
+ "401": {
24704
+ "description": "Unauthenticated"
24705
+ },
24706
+ "403": {
24707
+ "description": "Not a plt_ key"
24708
+ },
24709
+ "404": {
24710
+ "description": "Connection not found for this app"
24711
+ }
24712
+ }
24713
+ }
24714
+ },
24715
+ "/v1/platform/connections/{connection_id}/otel/threats": {
24716
+ "get": {
24717
+ "tags": [
24718
+ "Platform",
24719
+ "Observability"
24720
+ ],
24721
+ "summary": "Open threats on one connection's agents",
24722
+ "description": "`/v1/otel/threats` filtered to the connection's agents, same ranking (blast radius, then recency).\n\nA `plt_` key sees one connection's agents, never the end-user's org: that org may hold agents from other platforms or the user's own. The set is agents attributed to the connection plus the ones listed on it, constrained to the connection's org. A connection that does not belong to the calling app is a 404.",
24723
+ "operationId": "get_platform_connection_otel_threats",
24724
+ "parameters": [
24725
+ {
24726
+ "name": "connection_id",
24727
+ "in": "path",
24728
+ "required": true,
24729
+ "schema": {
24730
+ "type": "string",
24731
+ "format": "uuid"
24732
+ }
24733
+ },
24734
+ {
24735
+ "name": "state",
24736
+ "in": "query",
24737
+ "required": false,
24738
+ "schema": {
24739
+ "type": "string",
24740
+ "enum": [
24741
+ "open",
24742
+ "all"
24743
+ ]
24744
+ }
24745
+ }
24746
+ ],
24747
+ "responses": {
24748
+ "200": {
24749
+ "description": "Threats on the connection's agents, highest blast radius first",
24750
+ "content": {
24751
+ "application/json": {
24752
+ "schema": {
24753
+ "$ref": "#/paths/~1v1~1otel~1threats/get/responses/200/content/application~1json/schema"
24754
+ }
24755
+ }
24756
+ }
24757
+ },
24758
+ "401": {
24759
+ "description": "Unauthenticated"
24760
+ },
24761
+ "403": {
24762
+ "description": "Not a plt_ key"
24763
+ },
24764
+ "404": {
24765
+ "description": "Connection not found for this app"
24766
+ }
24767
+ }
24768
+ }
24769
+ },
24770
+ "/v1/platform/connections/{connection_id}/otel/summary": {
24771
+ "get": {
24772
+ "tags": [
24773
+ "Platform",
24774
+ "Observability"
24775
+ ],
24776
+ "summary": "Posture score and counts for one connection's agents",
24777
+ "description": "`/v1/otel/summary` over a smaller world: the posture score uses the connection's agents' trust scores and the resources they reach; threat and pending-approval counts are the connection's agents' only.\n\nA `plt_` key sees one connection's agents, never the end-user's org: that org may hold agents from other platforms or the user's own. The set is agents attributed to the connection plus the ones listed on it, constrained to the connection's org. A connection that does not belong to the calling app is a 404.",
24778
+ "operationId": "get_platform_connection_otel_summary",
24779
+ "parameters": [
24780
+ {
24781
+ "name": "connection_id",
24782
+ "in": "path",
24783
+ "required": true,
24784
+ "schema": {
24785
+ "type": "string",
24786
+ "format": "uuid"
24787
+ }
24788
+ }
24789
+ ],
24790
+ "responses": {
24791
+ "200": {
24792
+ "description": "Posture and counts for the connection",
24793
+ "content": {
24794
+ "application/json": {
24795
+ "schema": {
24796
+ "$ref": "#/paths/~1v1~1otel~1summary/get/responses/200/content/application~1json/schema"
24797
+ }
24798
+ }
24799
+ }
24800
+ },
24801
+ "401": {
24802
+ "description": "Unauthenticated"
24803
+ },
24804
+ "403": {
24805
+ "description": "Not a plt_ key"
24806
+ },
24807
+ "404": {
24808
+ "description": "Connection not found for this app"
24809
+ }
24810
+ }
24811
+ }
24812
+ },
24813
+ "/v1/platform/connections/{connection_id}/otel/stream": {
24814
+ "get": {
24815
+ "tags": [
24816
+ "Platform",
24817
+ "Observability"
24818
+ ],
24819
+ "summary": "Live signal stream for one connection's agents (SSE)",
24820
+ "description": "The same protocol as `/v1/otel/stream` — `Last-Event-ID` resume, `event: gap` on a stale cursor or a lagged subscriber — filtered to signals whose agent is one of the connection's. Signals with no agent (a human's own dashboard actions) are never emitted here. The agent set is fixed at connect time; an agent added later appears on the next connect.\n\nStream slots are counted per platform app (five), not per connection.\n\nA `plt_` key sees one connection's agents, never the end-user's org: that org may hold agents from other platforms or the user's own. The set is agents attributed to the connection plus the ones listed on it, constrained to the connection's org. A connection that does not belong to the calling app is a 404.",
24821
+ "operationId": "get_platform_connection_otel_stream",
24822
+ "parameters": [
24823
+ {
24824
+ "name": "connection_id",
24825
+ "in": "path",
24826
+ "required": true,
24827
+ "schema": {
24828
+ "type": "string",
24829
+ "format": "uuid"
24830
+ }
24831
+ },
24832
+ {
24833
+ "name": "Last-Event-ID",
24834
+ "in": "header",
24835
+ "required": false,
24836
+ "schema": {
24837
+ "type": "string"
24838
+ }
24839
+ }
24840
+ ],
24841
+ "responses": {
24842
+ "200": {
24843
+ "description": "text/event-stream",
24844
+ "content": {
24845
+ "text/event-stream": {
24846
+ "schema": {
24847
+ "type": "string"
24848
+ }
24849
+ }
24850
+ }
24851
+ },
24852
+ "401": {
24853
+ "description": "Unauthenticated"
24854
+ },
24855
+ "403": {
24856
+ "description": "Not a plt_ key"
24857
+ },
24858
+ "404": {
24859
+ "description": "Connection not found for this app"
24860
+ },
24861
+ "429": {
24862
+ "description": "Stream slot cap for this app reached"
24863
+ }
24864
+ }
24865
+ }
24866
+ },
24672
24867
  "/v1/platform/connections/{connection_id}/resources": {
24673
24868
  "parameters": [
24674
24869
  {
@@ -25551,6 +25746,154 @@
25551
25746
  }
25552
25747
  }
25553
25748
  },
25749
+ "/v1/otel/agents/{agent_id}/trust": {
25750
+ "get": {
25751
+ "tags": [
25752
+ "Observability"
25753
+ ],
25754
+ "summary": "The breakdown behind one agent's trust score",
25755
+ "description": "The topology carries a single 0-100 trust number per agent. This is what it is made of: each weighted component (`null` when this deployment has no source for it — not measured, not zero), a 24-hour history for a sparkline, and the agent's last audit actions. Actions and resource types only; audit `metadata` is where secret paths live and it is not returned.\n\nScores are `shadow` until the engine is promoted out of recommend-only mode; an agent the engine has not yet reached returns `score: null` and `shadow: true`.\n\nHuman users only. An agent id outside the caller's org is a 404, not a 403, so the response does not confirm the id exists.",
25756
+ "operationId": "get_otel_agent_trust",
25757
+ "parameters": [
25758
+ {
25759
+ "name": "agent_id",
25760
+ "in": "path",
25761
+ "required": true,
25762
+ "schema": {
25763
+ "type": "string",
25764
+ "format": "uuid"
25765
+ }
25766
+ }
25767
+ ],
25768
+ "responses": {
25769
+ "200": {
25770
+ "description": "Current score, components, history, recent actions",
25771
+ "content": {
25772
+ "application/json": {
25773
+ "schema": {
25774
+ "type": "object",
25775
+ "required": [
25776
+ "agent_id",
25777
+ "shadow",
25778
+ "components",
25779
+ "history",
25780
+ "recent"
25781
+ ],
25782
+ "properties": {
25783
+ "agent_id": {
25784
+ "type": "string",
25785
+ "format": "uuid"
25786
+ },
25787
+ "score": {
25788
+ "type": "integer",
25789
+ "minimum": 0,
25790
+ "maximum": 100,
25791
+ "nullable": true
25792
+ },
25793
+ "shadow": {
25794
+ "type": "boolean",
25795
+ "description": "True while the engine is recommend-only or the agent is unscored."
25796
+ },
25797
+ "updated_at": {
25798
+ "type": "string",
25799
+ "format": "date-time",
25800
+ "nullable": true
25801
+ },
25802
+ "components": {
25803
+ "type": "object",
25804
+ "description": "0-100 per component; null means no source in this deployment.",
25805
+ "properties": {
25806
+ "denial_rate": {
25807
+ "type": "integer",
25808
+ "nullable": true
25809
+ },
25810
+ "threat_hits": {
25811
+ "type": "integer",
25812
+ "nullable": true
25813
+ },
25814
+ "egress_blocks": {
25815
+ "type": "integer",
25816
+ "nullable": true
25817
+ },
25818
+ "spend_velocity": {
25819
+ "type": "integer",
25820
+ "nullable": true
25821
+ },
25822
+ "off_hours": {
25823
+ "type": "integer",
25824
+ "nullable": true
25825
+ },
25826
+ "consensus_bypass": {
25827
+ "type": "integer",
25828
+ "nullable": true
25829
+ }
25830
+ }
25831
+ },
25832
+ "history": {
25833
+ "type": "array",
25834
+ "maxItems": 96,
25835
+ "description": "Oldest first, last 24 hours.",
25836
+ "items": {
25837
+ "type": "object",
25838
+ "required": [
25839
+ "at",
25840
+ "score"
25841
+ ],
25842
+ "properties": {
25843
+ "at": {
25844
+ "type": "string",
25845
+ "format": "date-time"
25846
+ },
25847
+ "score": {
25848
+ "type": "integer",
25849
+ "minimum": 0,
25850
+ "maximum": 100
25851
+ }
25852
+ }
25853
+ }
25854
+ },
25855
+ "recent": {
25856
+ "type": "array",
25857
+ "maxItems": 12,
25858
+ "description": "Newest first.",
25859
+ "items": {
25860
+ "type": "object",
25861
+ "required": [
25862
+ "at",
25863
+ "action"
25864
+ ],
25865
+ "properties": {
25866
+ "at": {
25867
+ "type": "string",
25868
+ "format": "date-time"
25869
+ },
25870
+ "action": {
25871
+ "type": "string"
25872
+ },
25873
+ "resource_type": {
25874
+ "type": "string",
25875
+ "nullable": true
25876
+ }
25877
+ }
25878
+ }
25879
+ }
25880
+ }
25881
+ }
25882
+ }
25883
+ }
25884
+ },
25885
+ "401": {
25886
+ "description": "Unauthenticated"
25887
+ },
25888
+ "403": {
25889
+ "description": "Not a human user"
25890
+ },
25891
+ "404": {
25892
+ "description": "No such agent in the caller's organization"
25893
+ }
25894
+ }
25895
+ }
25896
+ },
25554
25897
  "/v1/otel/flows": {
25555
25898
  "get": {
25556
25899
  "tags": [
package/openapi.yaml CHANGED
@@ -2,7 +2,7 @@ openapi: 3.1.0
2
2
 
3
3
  info:
4
4
  title: 1Claw API
5
- version: "0.61.8"
5
+ version: "0.61.10"
6
6
  description: |
7
7
  Secure secret management for AI agents. Provides vaults, secrets,
8
8
  policy-based access control, agent identity, Intents API,
@@ -15877,6 +15877,151 @@ paths:
15877
15877
  description: Forbidden, or the plan does not include this
15878
15878
  '404':
15879
15879
  description: Not found
15880
+ /v1/platform/connections/{connection_id}/otel/topology:
15881
+ get:
15882
+ tags: [Platform, Observability]
15883
+ summary: "Topology for one connection's agents"
15884
+ description: >-
15885
+ The same graph as `/v1/otel/topology`, restricted to what this
15886
+ connection's agents reach: the agents, the policies they hold,
15887
+ the vaults those grant, the chains they sign on and the systems
15888
+ they call. Restricted before the 500-node cap, so a large org's
15889
+ cap cannot cut the connection's own agents out. Walking is
15890
+ directed (agent → policy → vault), so a vault shared with
15891
+ another tenant's agent does not reveal that agent.
15892
+
15893
+
15894
+ A `plt_` key sees one connection's agents, never the end-user's org:
15895
+ that org may hold agents from other platforms or the user's
15896
+ own. The set is agents attributed to the connection plus the
15897
+ ones listed on it, constrained to the connection's org. A
15898
+ connection that does not belong to the calling app is a 404.
15899
+ operationId: get_platform_connection_otel_topology
15900
+ parameters:
15901
+ - name: connection_id
15902
+ in: path
15903
+ required: true
15904
+ schema: { type: string, format: uuid }
15905
+ responses:
15906
+ '200':
15907
+ description: Nodes and edges reachable from the connection's agents
15908
+ content:
15909
+ application/json:
15910
+ schema:
15911
+ $ref: '#/paths/~1v1~1otel~1topology/get/responses/200/content/application~1json/schema'
15912
+ '401': { description: Unauthenticated }
15913
+ '403': { description: Not a plt_ key }
15914
+ '404': { description: Connection not found for this app }
15915
+ /v1/platform/connections/{connection_id}/otel/threats:
15916
+ get:
15917
+ tags: [Platform, Observability]
15918
+ summary: "Open threats on one connection's agents"
15919
+ description: >-
15920
+ `/v1/otel/threats` filtered to the connection's agents, same
15921
+ ranking (blast radius, then recency).
15922
+
15923
+
15924
+ A `plt_` key sees one connection's agents, never the end-user's org:
15925
+ that org may hold agents from other platforms or the user's
15926
+ own. The set is agents attributed to the connection plus the
15927
+ ones listed on it, constrained to the connection's org. A
15928
+ connection that does not belong to the calling app is a 404.
15929
+ operationId: get_platform_connection_otel_threats
15930
+ parameters:
15931
+ - name: connection_id
15932
+ in: path
15933
+ required: true
15934
+ schema: { type: string, format: uuid }
15935
+ - name: state
15936
+ in: query
15937
+ required: false
15938
+ schema:
15939
+ type: string
15940
+ enum: [open, all]
15941
+ responses:
15942
+ '200':
15943
+ description: Threats on the connection's agents, highest blast radius first
15944
+ content:
15945
+ application/json:
15946
+ schema:
15947
+ $ref: '#/paths/~1v1~1otel~1threats/get/responses/200/content/application~1json/schema'
15948
+ '401': { description: Unauthenticated }
15949
+ '403': { description: Not a plt_ key }
15950
+ '404': { description: Connection not found for this app }
15951
+ /v1/platform/connections/{connection_id}/otel/summary:
15952
+ get:
15953
+ tags: [Platform, Observability]
15954
+ summary: "Posture score and counts for one connection's agents"
15955
+ description: >-
15956
+ `/v1/otel/summary` over a smaller world: the posture score uses
15957
+ the connection's agents' trust scores and the resources they
15958
+ reach; threat and pending-approval counts are the connection's
15959
+ agents' only.
15960
+
15961
+
15962
+ A `plt_` key sees one connection's agents, never the end-user's org:
15963
+ that org may hold agents from other platforms or the user's
15964
+ own. The set is agents attributed to the connection plus the
15965
+ ones listed on it, constrained to the connection's org. A
15966
+ connection that does not belong to the calling app is a 404.
15967
+ operationId: get_platform_connection_otel_summary
15968
+ parameters:
15969
+ - name: connection_id
15970
+ in: path
15971
+ required: true
15972
+ schema: { type: string, format: uuid }
15973
+ responses:
15974
+ '200':
15975
+ description: Posture and counts for the connection
15976
+ content:
15977
+ application/json:
15978
+ schema:
15979
+ $ref: '#/paths/~1v1~1otel~1summary/get/responses/200/content/application~1json/schema'
15980
+ '401': { description: Unauthenticated }
15981
+ '403': { description: Not a plt_ key }
15982
+ '404': { description: Connection not found for this app }
15983
+ /v1/platform/connections/{connection_id}/otel/stream:
15984
+ get:
15985
+ tags: [Platform, Observability]
15986
+ summary: "Live signal stream for one connection's agents (SSE)"
15987
+ description: >-
15988
+ The same protocol as `/v1/otel/stream` — `Last-Event-ID` resume,
15989
+ `event: gap` on a stale cursor or a lagged subscriber — filtered
15990
+ to signals whose agent is one of the connection's. Signals with
15991
+ no agent (a human's own dashboard actions) are never emitted
15992
+ here. The agent set is fixed at connect time; an agent added
15993
+ later appears on the next connect.
15994
+
15995
+
15996
+ Stream slots are counted per platform app (five), not per
15997
+ connection.
15998
+
15999
+
16000
+ A `plt_` key sees one connection's agents, never the end-user's org:
16001
+ that org may hold agents from other platforms or the user's
16002
+ own. The set is agents attributed to the connection plus the
16003
+ ones listed on it, constrained to the connection's org. A
16004
+ connection that does not belong to the calling app is a 404.
16005
+ operationId: get_platform_connection_otel_stream
16006
+ parameters:
16007
+ - name: connection_id
16008
+ in: path
16009
+ required: true
16010
+ schema: { type: string, format: uuid }
16011
+ - name: Last-Event-ID
16012
+ in: header
16013
+ required: false
16014
+ schema: { type: string }
16015
+ responses:
16016
+ '200':
16017
+ description: text/event-stream
16018
+ content:
16019
+ text/event-stream:
16020
+ schema: { type: string }
16021
+ '401': { description: Unauthenticated }
16022
+ '403': { description: Not a plt_ key }
16023
+ '404': { description: Connection not found for this app }
16024
+ '429': { description: Stream slot cap for this app reached }
15880
16025
  /v1/platform/connections/{connection_id}/resources:
15881
16026
  parameters:
15882
16027
  - name: connection_id
@@ -16402,6 +16547,79 @@ paths:
16402
16547
  description: Unauthenticated
16403
16548
  '403':
16404
16549
  description: Not a human user
16550
+ /v1/otel/agents/{agent_id}/trust:
16551
+ get:
16552
+ tags: [Observability]
16553
+ summary: "The breakdown behind one agent's trust score"
16554
+ description: >-
16555
+ The topology carries a single 0-100 trust number per agent.
16556
+ This is what it is made of: each weighted component (`null`
16557
+ when this deployment has no source for it — not measured, not
16558
+ zero), a 24-hour history for a sparkline, and the agent's last
16559
+ audit actions. Actions and resource types only; audit
16560
+ `metadata` is where secret paths live and it is not returned.
16561
+
16562
+
16563
+ Scores are `shadow` until the engine is promoted out of
16564
+ recommend-only mode; an agent the engine has not yet reached
16565
+ returns `score: null` and `shadow: true`.
16566
+
16567
+
16568
+ Human users only. An agent id outside the caller's org is a
16569
+ 404, not a 403, so the response does not confirm the id exists.
16570
+ operationId: get_otel_agent_trust
16571
+ parameters:
16572
+ - name: agent_id
16573
+ in: path
16574
+ required: true
16575
+ schema: { type: string, format: uuid }
16576
+ responses:
16577
+ '200':
16578
+ description: Current score, components, history, recent actions
16579
+ content:
16580
+ application/json:
16581
+ schema:
16582
+ type: object
16583
+ required: [agent_id, shadow, components, history, recent]
16584
+ properties:
16585
+ agent_id: { type: string, format: uuid }
16586
+ score: { type: integer, minimum: 0, maximum: 100, nullable: true }
16587
+ shadow: { type: boolean, description: "True while the engine is recommend-only or the agent is unscored." }
16588
+ updated_at: { type: string, format: date-time, nullable: true }
16589
+ components:
16590
+ type: object
16591
+ description: "0-100 per component; null means no source in this deployment."
16592
+ properties:
16593
+ denial_rate: { type: integer, nullable: true }
16594
+ threat_hits: { type: integer, nullable: true }
16595
+ egress_blocks: { type: integer, nullable: true }
16596
+ spend_velocity: { type: integer, nullable: true }
16597
+ off_hours: { type: integer, nullable: true }
16598
+ consensus_bypass: { type: integer, nullable: true }
16599
+ history:
16600
+ type: array
16601
+ maxItems: 96
16602
+ description: "Oldest first, last 24 hours."
16603
+ items:
16604
+ type: object
16605
+ required: [at, score]
16606
+ properties:
16607
+ at: { type: string, format: date-time }
16608
+ score: { type: integer, minimum: 0, maximum: 100 }
16609
+ recent:
16610
+ type: array
16611
+ maxItems: 12
16612
+ description: "Newest first."
16613
+ items:
16614
+ type: object
16615
+ required: [at, action]
16616
+ properties:
16617
+ at: { type: string, format: date-time }
16618
+ action: { type: string }
16619
+ resource_type: { type: string, nullable: true }
16620
+ '401': { description: Unauthenticated }
16621
+ '403': { description: Not a human user }
16622
+ '404': { description: No such agent in the caller's organization }
16405
16623
  /v1/otel/flows:
16406
16624
  get:
16407
16625
  tags: [Observability]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@1claw/openapi-spec",
3
- "version": "0.61.8",
3
+ "version": "0.61.10",
4
4
  "description": "OpenAPI 3.1.0 specification for the 1Claw Vault API \u2014 generate clients in any language",
5
5
  "license": "MIT",
6
6
  "repository": {