@hablala/api-contract 0.9.0 → 0.10.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.
- package/dist/index.d.ts +1445 -754
- package/openapi.json +1378 -411
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -730,6 +730,48 @@
|
|
|
730
730
|
"AccountManifestSections": {
|
|
731
731
|
"description": "Las secciones declarables de una cuenta (ADR-027). El `kind` fija la SUPERFICIE: una `organization` declara el diccionario (objects…), la mensajería (spaces/channels) y el acceso (roles, sso, domains, invitations); un `individual` declara su `profile` y su `privacy` (singletons). Cada sección es opcional (ausente = no gestionada). Gobernanza: la mayoría es AUTORITATIVA (lo no declarado se archiva — policies/roles/sso se BORRAN); son ADITIVAS (siembra, no expulsa) los `initialMembers` de un canal, los `domains` y las `invitations` — lifecycle, no estado deseado. Los datos (records/mensajes) no son configuración.",
|
|
732
732
|
"properties": {
|
|
733
|
+
"actions": {
|
|
734
|
+
"oneOf": [
|
|
735
|
+
{
|
|
736
|
+
"items": {
|
|
737
|
+
"$ref": "#/components/schemas/ManifestAction"
|
|
738
|
+
},
|
|
739
|
+
"type": "array",
|
|
740
|
+
"x-struct": null,
|
|
741
|
+
"x-validate": null
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
"properties": {
|
|
745
|
+
"items": {
|
|
746
|
+
"items": {
|
|
747
|
+
"$ref": "#/components/schemas/ManifestAction"
|
|
748
|
+
},
|
|
749
|
+
"type": "array",
|
|
750
|
+
"x-struct": null,
|
|
751
|
+
"x-validate": null
|
|
752
|
+
},
|
|
753
|
+
"mode": {
|
|
754
|
+
"description": "`authoritative` (default): lo no declarado se archiva/borra. `additive`: solo crea/actualiza lo declarado, sin expulsar lo demás (least astonishment).",
|
|
755
|
+
"enum": [
|
|
756
|
+
"authoritative",
|
|
757
|
+
"additive"
|
|
758
|
+
],
|
|
759
|
+
"type": "string",
|
|
760
|
+
"x-struct": null,
|
|
761
|
+
"x-validate": null
|
|
762
|
+
}
|
|
763
|
+
},
|
|
764
|
+
"required": [
|
|
765
|
+
"items"
|
|
766
|
+
],
|
|
767
|
+
"type": "object",
|
|
768
|
+
"x-struct": null,
|
|
769
|
+
"x-validate": null
|
|
770
|
+
}
|
|
771
|
+
],
|
|
772
|
+
"x-struct": null,
|
|
773
|
+
"x-validate": null
|
|
774
|
+
},
|
|
733
775
|
"agents": {
|
|
734
776
|
"oneOf": [
|
|
735
777
|
{
|
|
@@ -1277,6 +1319,54 @@
|
|
|
1277
1319
|
"x-struct": "Elixir.HablalaApiWeb.Schemas.AccountManifestSections",
|
|
1278
1320
|
"x-validate": null
|
|
1279
1321
|
},
|
|
1322
|
+
"ActionRunRequest": {
|
|
1323
|
+
"description": "Input de una action transaccional. `input` es el mapa que interpolan los steps (`{{input.…}}`, y `{{item.…}}` en los steps con for_each).",
|
|
1324
|
+
"properties": {
|
|
1325
|
+
"idempotency_key": {
|
|
1326
|
+
"description": "Clave natural para reintentos seguros (se propaga a cada step creado).",
|
|
1327
|
+
"type": "string",
|
|
1328
|
+
"x-struct": null,
|
|
1329
|
+
"x-validate": null
|
|
1330
|
+
},
|
|
1331
|
+
"input": {
|
|
1332
|
+
"description": "Los valores de entrada de la action (forma libre, definida por sus steps).",
|
|
1333
|
+
"type": "object",
|
|
1334
|
+
"x-struct": null,
|
|
1335
|
+
"x-validate": null
|
|
1336
|
+
}
|
|
1337
|
+
},
|
|
1338
|
+
"title": "ActionRunRequest",
|
|
1339
|
+
"type": "object",
|
|
1340
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.ActionRunRequest",
|
|
1341
|
+
"x-validate": null
|
|
1342
|
+
},
|
|
1343
|
+
"ActionRunResponse": {
|
|
1344
|
+
"properties": {
|
|
1345
|
+
"data": {
|
|
1346
|
+
"properties": {
|
|
1347
|
+
"results": {
|
|
1348
|
+
"description": "Por step_id, el/los records creados (`{id, properties}`). Un step con for_each devuelve una lista; uno simple, un objeto.",
|
|
1349
|
+
"type": "object",
|
|
1350
|
+
"x-struct": null,
|
|
1351
|
+
"x-validate": null
|
|
1352
|
+
}
|
|
1353
|
+
},
|
|
1354
|
+
"required": [
|
|
1355
|
+
"results"
|
|
1356
|
+
],
|
|
1357
|
+
"type": "object",
|
|
1358
|
+
"x-struct": null,
|
|
1359
|
+
"x-validate": null
|
|
1360
|
+
}
|
|
1361
|
+
},
|
|
1362
|
+
"required": [
|
|
1363
|
+
"data"
|
|
1364
|
+
],
|
|
1365
|
+
"title": "ActionRunResponse",
|
|
1366
|
+
"type": "object",
|
|
1367
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.ActionRunResponse",
|
|
1368
|
+
"x-validate": null
|
|
1369
|
+
},
|
|
1280
1370
|
"AddMemberRequest": {
|
|
1281
1371
|
"description": "Añade un usuario del tenant a una conversación (invitar a un canal).",
|
|
1282
1372
|
"properties": {
|
|
@@ -1698,6 +1788,134 @@
|
|
|
1698
1788
|
"x-struct": "Elixir.HablalaApiWeb.Schemas.AgentsResponse",
|
|
1699
1789
|
"x-validate": null
|
|
1700
1790
|
},
|
|
1791
|
+
"AggregateQueryRequest": {
|
|
1792
|
+
"description": "Aggregation query: agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), bajo la misma gobernanza (RBAC + ABAC default-deny) que la lectura puntual. El par canónico measures + dimensions del semantic layer (Cube.dev).",
|
|
1793
|
+
"properties": {
|
|
1794
|
+
"dimensions": {
|
|
1795
|
+
"description": "Los attributes por los que agrupar (GROUP BY).",
|
|
1796
|
+
"items": {
|
|
1797
|
+
"properties": {
|
|
1798
|
+
"attr": {
|
|
1799
|
+
"description": "Slug del attribute a agrupar.",
|
|
1800
|
+
"type": "string",
|
|
1801
|
+
"x-struct": null,
|
|
1802
|
+
"x-validate": null
|
|
1803
|
+
},
|
|
1804
|
+
"granularity": {
|
|
1805
|
+
"description": "Solo para date/timestamp (time dimension): trunca el valor a ese bucket.",
|
|
1806
|
+
"enum": [
|
|
1807
|
+
"day",
|
|
1808
|
+
"week",
|
|
1809
|
+
"month",
|
|
1810
|
+
"quarter",
|
|
1811
|
+
"year"
|
|
1812
|
+
],
|
|
1813
|
+
"type": "string",
|
|
1814
|
+
"x-struct": null,
|
|
1815
|
+
"x-validate": null
|
|
1816
|
+
}
|
|
1817
|
+
},
|
|
1818
|
+
"required": [
|
|
1819
|
+
"attr"
|
|
1820
|
+
],
|
|
1821
|
+
"type": "object",
|
|
1822
|
+
"x-struct": null,
|
|
1823
|
+
"x-validate": null
|
|
1824
|
+
},
|
|
1825
|
+
"type": "array",
|
|
1826
|
+
"x-struct": null,
|
|
1827
|
+
"x-validate": null
|
|
1828
|
+
},
|
|
1829
|
+
"measures": {
|
|
1830
|
+
"description": "Las agregaciones a calcular (al menos una).",
|
|
1831
|
+
"items": {
|
|
1832
|
+
"properties": {
|
|
1833
|
+
"as": {
|
|
1834
|
+
"description": "Alias de salida (default: `count` o `<fn>_<attr>`).",
|
|
1835
|
+
"type": "string",
|
|
1836
|
+
"x-struct": null,
|
|
1837
|
+
"x-validate": null
|
|
1838
|
+
},
|
|
1839
|
+
"attr": {
|
|
1840
|
+
"description": "Slug del attribute a agregar (number para sum/avg; number/date/timestamp para min/max). Omitido solo en `count`.",
|
|
1841
|
+
"type": "string",
|
|
1842
|
+
"x-struct": null,
|
|
1843
|
+
"x-validate": null
|
|
1844
|
+
},
|
|
1845
|
+
"fn": {
|
|
1846
|
+
"description": "La función de agregación. `count` no lleva `attr`.",
|
|
1847
|
+
"enum": [
|
|
1848
|
+
"count",
|
|
1849
|
+
"sum",
|
|
1850
|
+
"avg",
|
|
1851
|
+
"min",
|
|
1852
|
+
"max"
|
|
1853
|
+
],
|
|
1854
|
+
"type": "string",
|
|
1855
|
+
"x-struct": null,
|
|
1856
|
+
"x-validate": null
|
|
1857
|
+
}
|
|
1858
|
+
},
|
|
1859
|
+
"required": [
|
|
1860
|
+
"fn"
|
|
1861
|
+
],
|
|
1862
|
+
"type": "object",
|
|
1863
|
+
"x-struct": null,
|
|
1864
|
+
"x-validate": null
|
|
1865
|
+
},
|
|
1866
|
+
"type": "array",
|
|
1867
|
+
"x-struct": null,
|
|
1868
|
+
"x-validate": null
|
|
1869
|
+
},
|
|
1870
|
+
"object": {
|
|
1871
|
+
"description": "Slug del objeto raíz (requerido).",
|
|
1872
|
+
"type": "string",
|
|
1873
|
+
"x-struct": null,
|
|
1874
|
+
"x-validate": null
|
|
1875
|
+
},
|
|
1876
|
+
"where": {
|
|
1877
|
+
"description": "Mismo formato que en la consulta puntual: filtra ANTES de agregar.",
|
|
1878
|
+
"items": {
|
|
1879
|
+
"type": "object",
|
|
1880
|
+
"x-struct": null,
|
|
1881
|
+
"x-validate": null
|
|
1882
|
+
},
|
|
1883
|
+
"type": "array",
|
|
1884
|
+
"x-struct": null,
|
|
1885
|
+
"x-validate": null
|
|
1886
|
+
}
|
|
1887
|
+
},
|
|
1888
|
+
"required": [
|
|
1889
|
+
"object",
|
|
1890
|
+
"measures"
|
|
1891
|
+
],
|
|
1892
|
+
"title": "AggregateQueryRequest",
|
|
1893
|
+
"type": "object",
|
|
1894
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.AggregateQueryRequest",
|
|
1895
|
+
"x-validate": null
|
|
1896
|
+
},
|
|
1897
|
+
"AggregateResultResponse": {
|
|
1898
|
+
"properties": {
|
|
1899
|
+
"data": {
|
|
1900
|
+
"description": "Un grupo por combinación de dimensions (o un solo grupo con los totales si no hay dimensions). Cada grupo es un mapa: cada dimension por su slug y cada measure por su alias de salida.",
|
|
1901
|
+
"items": {
|
|
1902
|
+
"type": "object",
|
|
1903
|
+
"x-struct": null,
|
|
1904
|
+
"x-validate": null
|
|
1905
|
+
},
|
|
1906
|
+
"type": "array",
|
|
1907
|
+
"x-struct": null,
|
|
1908
|
+
"x-validate": null
|
|
1909
|
+
}
|
|
1910
|
+
},
|
|
1911
|
+
"required": [
|
|
1912
|
+
"data"
|
|
1913
|
+
],
|
|
1914
|
+
"title": "AggregateResultResponse",
|
|
1915
|
+
"type": "object",
|
|
1916
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.AggregateResultResponse",
|
|
1917
|
+
"x-validate": null
|
|
1918
|
+
},
|
|
1701
1919
|
"ApiKey": {
|
|
1702
1920
|
"description": "Metadatos de una API key de la Public API. El secreto en claro NO se incluye aquí — solo se devuelve una vez, al crearla.",
|
|
1703
1921
|
"properties": {
|
|
@@ -2030,6 +2248,13 @@
|
|
|
2030
2248
|
"x-struct": null,
|
|
2031
2249
|
"x-validate": null
|
|
2032
2250
|
},
|
|
2251
|
+
"seatsPerSlot": {
|
|
2252
|
+
"description": "Capacidad del slot: cuántas citas solapadas del mismo organizador caben a la vez (Cal.com seats per time slot). 1 = no-solape estricto; N = hasta N concurrentes.",
|
|
2253
|
+
"minimum": 1,
|
|
2254
|
+
"type": "integer",
|
|
2255
|
+
"x-struct": null,
|
|
2256
|
+
"x-validate": null
|
|
2257
|
+
},
|
|
2033
2258
|
"startsAt": {
|
|
2034
2259
|
"format": "date-time",
|
|
2035
2260
|
"type": "string",
|
|
@@ -2100,6 +2325,13 @@
|
|
|
2100
2325
|
"x-struct": null,
|
|
2101
2326
|
"x-validate": null
|
|
2102
2327
|
},
|
|
2328
|
+
"seatsPerSlot": {
|
|
2329
|
+
"description": "Capacidad del slot (default 1 = no-solape estricto). N permite hasta N citas solapadas del mismo organizador (aforo, clases, atención en paralelo).",
|
|
2330
|
+
"minimum": 1,
|
|
2331
|
+
"type": "integer",
|
|
2332
|
+
"x-struct": null,
|
|
2333
|
+
"x-validate": null
|
|
2334
|
+
},
|
|
2103
2335
|
"startsAt": {
|
|
2104
2336
|
"format": "date-time",
|
|
2105
2337
|
"type": "string",
|
|
@@ -6734,6 +6966,60 @@
|
|
|
6734
6966
|
"x-struct": "Elixir.HablalaApiWeb.Schemas.MachineOrganizationResponse",
|
|
6735
6967
|
"x-validate": null
|
|
6736
6968
|
},
|
|
6969
|
+
"ManifestAction": {
|
|
6970
|
+
"description": "Una action transaccional del tenant declarada (sección `actions/`), identificada por `slug`. Ejecuta sus `steps` en UNA transacción (todo-o-nada) al invocar `POST /v1/actions/:slug`: crear una cabecera + N líneas de forma atómica (el caso `create_rental` de una app interna). Cada step declara un `object` del diccionario y las `properties` a escribir, con interpolación `{{input.…}}`, `{{steps.<id>.id}}` (ref entre steps) y `{{item.…}}` en un step con `for_each`. Sección AUTORITATIVA: retirarla del manifiesto la archiva. `description`/`synonyms` son el contexto con el que los agentes LLM la descubren vía MCP (obligatoria la descripción, como el resto del diccionario).",
|
|
6971
|
+
"properties": {
|
|
6972
|
+
"description": {
|
|
6973
|
+
"description": "Qué hace la action (contexto para humanos y agentes LLM). Obligatoria al crear.",
|
|
6974
|
+
"type": "string",
|
|
6975
|
+
"x-struct": null,
|
|
6976
|
+
"x-validate": null
|
|
6977
|
+
},
|
|
6978
|
+
"slug": {
|
|
6979
|
+
"description": "Identidad estable snake_case, única por organización (match key).",
|
|
6980
|
+
"type": "string",
|
|
6981
|
+
"x-struct": null,
|
|
6982
|
+
"x-validate": null
|
|
6983
|
+
},
|
|
6984
|
+
"steps": {
|
|
6985
|
+
"description": "Lista NO vacía de pasos. Cada paso: `id` (opcional, para refs `{{steps.<id>.id}}`), `object` (slug del diccionario), `properties` (mapa slug→valor con interpolación) y opcionalmente `for_each` (una ruta del input que expande el step en N records).",
|
|
6986
|
+
"items": {
|
|
6987
|
+
"additionalProperties": true,
|
|
6988
|
+
"type": "object",
|
|
6989
|
+
"x-struct": null,
|
|
6990
|
+
"x-validate": null
|
|
6991
|
+
},
|
|
6992
|
+
"type": "array",
|
|
6993
|
+
"x-struct": null,
|
|
6994
|
+
"x-validate": null
|
|
6995
|
+
},
|
|
6996
|
+
"synonyms": {
|
|
6997
|
+
"description": "Sinónimos para el descubrimiento por búsqueda/LLM.",
|
|
6998
|
+
"items": {
|
|
6999
|
+
"type": "string",
|
|
7000
|
+
"x-struct": null,
|
|
7001
|
+
"x-validate": null
|
|
7002
|
+
},
|
|
7003
|
+
"type": "array",
|
|
7004
|
+
"x-struct": null,
|
|
7005
|
+
"x-validate": null
|
|
7006
|
+
},
|
|
7007
|
+
"title": {
|
|
7008
|
+
"description": "Nombre visible; si se omite, se deriva del slug.",
|
|
7009
|
+
"type": "string",
|
|
7010
|
+
"x-struct": null,
|
|
7011
|
+
"x-validate": null
|
|
7012
|
+
}
|
|
7013
|
+
},
|
|
7014
|
+
"required": [
|
|
7015
|
+
"slug",
|
|
7016
|
+
"steps"
|
|
7017
|
+
],
|
|
7018
|
+
"title": "ManifestAction",
|
|
7019
|
+
"type": "object",
|
|
7020
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.ManifestAction",
|
|
7021
|
+
"x-validate": null
|
|
7022
|
+
},
|
|
6737
7023
|
"ManifestAgent": {
|
|
6738
7024
|
"description": "Un agente de IA declarado, identificado por `handle`. Archivar (no declararlo) lo revoca. `ownerUserId` (id público `user_…`) es obligatorio al crear con un access token de máquina; con un usuario, el creador es el dueño por defecto.",
|
|
6739
7025
|
"properties": {
|
|
@@ -7845,49 +8131,178 @@
|
|
|
7845
8131
|
"x-struct": "Elixir.HablalaApiWeb.Schemas.MediaResponse",
|
|
7846
8132
|
"x-validate": null
|
|
7847
8133
|
},
|
|
7848
|
-
"
|
|
8134
|
+
"Member": {
|
|
8135
|
+
"description": "Un miembro de la organización: identidad legible + sus roles (sin secretos).",
|
|
7849
8136
|
"properties": {
|
|
7850
|
-
"avatarUrl": {
|
|
7851
|
-
"description": "Avatar override para esta org; `null` usa el global del usuario.",
|
|
7852
|
-
"nullable": true,
|
|
7853
|
-
"type": "string",
|
|
7854
|
-
"x-struct": null,
|
|
7855
|
-
"x-validate": null
|
|
7856
|
-
},
|
|
7857
8137
|
"displayName": {
|
|
7858
|
-
"description": "Nombre visible en esta org (override del `name` global).",
|
|
7859
8138
|
"nullable": true,
|
|
7860
8139
|
"type": "string",
|
|
7861
8140
|
"x-struct": null,
|
|
7862
8141
|
"x-validate": null
|
|
7863
8142
|
},
|
|
7864
8143
|
"email": {
|
|
7865
|
-
"description": "Email corporativo del miembro (dato de org entre colegas, acotado al tenant). `null` si la cuenta no tiene email. No confundir con el perfil público `user`, que no lleva PII.",
|
|
7866
|
-
"format": "email",
|
|
7867
8144
|
"nullable": true,
|
|
7868
8145
|
"type": "string",
|
|
7869
8146
|
"x-struct": null,
|
|
7870
8147
|
"x-validate": null
|
|
7871
8148
|
},
|
|
7872
8149
|
"id": {
|
|
8150
|
+
"description": "Id de la membresía (`mbr_…`).",
|
|
7873
8151
|
"type": "string",
|
|
7874
8152
|
"x-struct": null,
|
|
7875
8153
|
"x-validate": null
|
|
7876
8154
|
},
|
|
7877
|
-
"
|
|
7878
|
-
"
|
|
8155
|
+
"roles": {
|
|
8156
|
+
"description": "Los roles del miembro por nombre (owner/admin/member o custom).",
|
|
8157
|
+
"items": {
|
|
8158
|
+
"type": "string",
|
|
8159
|
+
"x-struct": null,
|
|
8160
|
+
"x-validate": null
|
|
8161
|
+
},
|
|
8162
|
+
"type": "array",
|
|
8163
|
+
"x-struct": null,
|
|
8164
|
+
"x-validate": null
|
|
8165
|
+
}
|
|
8166
|
+
},
|
|
8167
|
+
"required": [
|
|
8168
|
+
"id",
|
|
8169
|
+
"roles"
|
|
8170
|
+
],
|
|
8171
|
+
"title": "Member",
|
|
8172
|
+
"type": "object",
|
|
8173
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.Member",
|
|
8174
|
+
"x-validate": null
|
|
8175
|
+
},
|
|
8176
|
+
"MemberLoginRequest": {
|
|
8177
|
+
"description": "Credenciales de un miembro (empleado que opera la org). La organización sale de la API key.",
|
|
8178
|
+
"properties": {
|
|
8179
|
+
"email": {
|
|
8180
|
+
"format": "email",
|
|
7879
8181
|
"type": "string",
|
|
7880
8182
|
"x-struct": null,
|
|
7881
8183
|
"x-validate": null
|
|
7882
8184
|
},
|
|
7883
|
-
"
|
|
8185
|
+
"password": {
|
|
8186
|
+
"format": "password",
|
|
7884
8187
|
"type": "string",
|
|
7885
8188
|
"x-struct": null,
|
|
7886
8189
|
"x-validate": null
|
|
7887
|
-
}
|
|
7888
|
-
|
|
7889
|
-
|
|
7890
|
-
|
|
8190
|
+
}
|
|
8191
|
+
},
|
|
8192
|
+
"required": [
|
|
8193
|
+
"email",
|
|
8194
|
+
"password"
|
|
8195
|
+
],
|
|
8196
|
+
"title": "MemberLoginRequest",
|
|
8197
|
+
"type": "object",
|
|
8198
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.MemberLoginRequest",
|
|
8199
|
+
"x-validate": null
|
|
8200
|
+
},
|
|
8201
|
+
"MemberResponse": {
|
|
8202
|
+
"properties": {
|
|
8203
|
+
"data": {
|
|
8204
|
+
"$ref": "#/components/schemas/Member"
|
|
8205
|
+
}
|
|
8206
|
+
},
|
|
8207
|
+
"required": [
|
|
8208
|
+
"data"
|
|
8209
|
+
],
|
|
8210
|
+
"title": "MemberResponse",
|
|
8211
|
+
"type": "object",
|
|
8212
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.MemberResponse",
|
|
8213
|
+
"x-validate": null
|
|
8214
|
+
},
|
|
8215
|
+
"MemberSession": {
|
|
8216
|
+
"properties": {
|
|
8217
|
+
"expiresAt": {
|
|
8218
|
+
"format": "date-time",
|
|
8219
|
+
"nullable": true,
|
|
8220
|
+
"type": "string",
|
|
8221
|
+
"x-struct": null,
|
|
8222
|
+
"x-validate": null
|
|
8223
|
+
},
|
|
8224
|
+
"member": {
|
|
8225
|
+
"$ref": "#/components/schemas/Member"
|
|
8226
|
+
},
|
|
8227
|
+
"prefix": {
|
|
8228
|
+
"nullable": true,
|
|
8229
|
+
"type": "string",
|
|
8230
|
+
"x-struct": null,
|
|
8231
|
+
"x-validate": null
|
|
8232
|
+
},
|
|
8233
|
+
"token": {
|
|
8234
|
+
"description": "El member session token en claro (`mem_…`), legible SOLO en esta respuesta.",
|
|
8235
|
+
"type": "string",
|
|
8236
|
+
"x-struct": null,
|
|
8237
|
+
"x-validate": null
|
|
8238
|
+
}
|
|
8239
|
+
},
|
|
8240
|
+
"required": [
|
|
8241
|
+
"token",
|
|
8242
|
+
"member"
|
|
8243
|
+
],
|
|
8244
|
+
"title": "MemberSession",
|
|
8245
|
+
"type": "object",
|
|
8246
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.MemberSession",
|
|
8247
|
+
"x-validate": null
|
|
8248
|
+
},
|
|
8249
|
+
"MemberSessionResponse": {
|
|
8250
|
+
"properties": {
|
|
8251
|
+
"data": {
|
|
8252
|
+
"$ref": "#/components/schemas/MemberSession"
|
|
8253
|
+
}
|
|
8254
|
+
},
|
|
8255
|
+
"required": [
|
|
8256
|
+
"data"
|
|
8257
|
+
],
|
|
8258
|
+
"title": "MemberSessionResponse",
|
|
8259
|
+
"type": "object",
|
|
8260
|
+
"x-struct": "Elixir.HablalaApiWeb.Schemas.MemberSessionResponse",
|
|
8261
|
+
"x-validate": null
|
|
8262
|
+
},
|
|
8263
|
+
"Membership": {
|
|
8264
|
+
"properties": {
|
|
8265
|
+
"avatarUrl": {
|
|
8266
|
+
"description": "Avatar override para esta org; `null` usa el global del usuario.",
|
|
8267
|
+
"nullable": true,
|
|
8268
|
+
"type": "string",
|
|
8269
|
+
"x-struct": null,
|
|
8270
|
+
"x-validate": null
|
|
8271
|
+
},
|
|
8272
|
+
"displayName": {
|
|
8273
|
+
"description": "Nombre visible en esta org (override del `name` global).",
|
|
8274
|
+
"nullable": true,
|
|
8275
|
+
"type": "string",
|
|
8276
|
+
"x-struct": null,
|
|
8277
|
+
"x-validate": null
|
|
8278
|
+
},
|
|
8279
|
+
"email": {
|
|
8280
|
+
"description": "Email corporativo del miembro (dato de org entre colegas, acotado al tenant). `null` si la cuenta no tiene email. No confundir con el perfil público `user`, que no lleva PII.",
|
|
8281
|
+
"format": "email",
|
|
8282
|
+
"nullable": true,
|
|
8283
|
+
"type": "string",
|
|
8284
|
+
"x-struct": null,
|
|
8285
|
+
"x-validate": null
|
|
8286
|
+
},
|
|
8287
|
+
"id": {
|
|
8288
|
+
"type": "string",
|
|
8289
|
+
"x-struct": null,
|
|
8290
|
+
"x-validate": null
|
|
8291
|
+
},
|
|
8292
|
+
"insertedAt": {
|
|
8293
|
+
"format": "date-time",
|
|
8294
|
+
"type": "string",
|
|
8295
|
+
"x-struct": null,
|
|
8296
|
+
"x-validate": null
|
|
8297
|
+
},
|
|
8298
|
+
"organizationId": {
|
|
8299
|
+
"type": "string",
|
|
8300
|
+
"x-struct": null,
|
|
8301
|
+
"x-validate": null
|
|
8302
|
+
},
|
|
8303
|
+
"roles": {
|
|
8304
|
+
"items": {
|
|
8305
|
+
"$ref": "#/components/schemas/RoleRef"
|
|
7891
8306
|
},
|
|
7892
8307
|
"type": "array",
|
|
7893
8308
|
"x-struct": null,
|
|
@@ -9780,7 +10195,8 @@
|
|
|
9780
10195
|
"read",
|
|
9781
10196
|
"create",
|
|
9782
10197
|
"update",
|
|
9783
|
-
"delete"
|
|
10198
|
+
"delete",
|
|
10199
|
+
"signal"
|
|
9784
10200
|
],
|
|
9785
10201
|
"type": "string",
|
|
9786
10202
|
"x-struct": null,
|
|
@@ -9824,6 +10240,8 @@
|
|
|
9824
10240
|
"x-validate": null
|
|
9825
10241
|
},
|
|
9826
10242
|
"principalId": {
|
|
10243
|
+
"description": "null para los principales de clase (public/end_user/access_token).",
|
|
10244
|
+
"nullable": true,
|
|
9827
10245
|
"type": "string",
|
|
9828
10246
|
"x-struct": null,
|
|
9829
10247
|
"x-validate": null
|
|
@@ -9832,7 +10250,10 @@
|
|
|
9832
10250
|
"enum": [
|
|
9833
10251
|
"role",
|
|
9834
10252
|
"user",
|
|
9835
|
-
"agent"
|
|
10253
|
+
"agent",
|
|
10254
|
+
"public",
|
|
10255
|
+
"end_user",
|
|
10256
|
+
"access_token"
|
|
9836
10257
|
],
|
|
9837
10258
|
"type": "string",
|
|
9838
10259
|
"x-struct": null,
|
|
@@ -9867,7 +10288,6 @@
|
|
|
9867
10288
|
"effect",
|
|
9868
10289
|
"action",
|
|
9869
10290
|
"principalType",
|
|
9870
|
-
"principalId",
|
|
9871
10291
|
"resourceType"
|
|
9872
10292
|
],
|
|
9873
10293
|
"title": "Policy",
|
|
@@ -9882,7 +10302,8 @@
|
|
|
9882
10302
|
"read",
|
|
9883
10303
|
"create",
|
|
9884
10304
|
"update",
|
|
9885
|
-
"delete"
|
|
10305
|
+
"delete",
|
|
10306
|
+
"signal"
|
|
9886
10307
|
],
|
|
9887
10308
|
"type": "string",
|
|
9888
10309
|
"x-struct": null,
|
|
@@ -9915,6 +10336,8 @@
|
|
|
9915
10336
|
"x-validate": null
|
|
9916
10337
|
},
|
|
9917
10338
|
"principalId": {
|
|
10339
|
+
"description": "null/omitido para los principales de clase (public/end_user/access_token).",
|
|
10340
|
+
"nullable": true,
|
|
9918
10341
|
"type": "string",
|
|
9919
10342
|
"x-struct": null,
|
|
9920
10343
|
"x-validate": null
|
|
@@ -9923,7 +10346,10 @@
|
|
|
9923
10346
|
"enum": [
|
|
9924
10347
|
"role",
|
|
9925
10348
|
"user",
|
|
9926
|
-
"agent"
|
|
10349
|
+
"agent",
|
|
10350
|
+
"public",
|
|
10351
|
+
"end_user",
|
|
10352
|
+
"access_token"
|
|
9927
10353
|
],
|
|
9928
10354
|
"type": "string",
|
|
9929
10355
|
"x-struct": null,
|
|
@@ -9955,7 +10381,6 @@
|
|
|
9955
10381
|
"effect",
|
|
9956
10382
|
"action",
|
|
9957
10383
|
"principalType",
|
|
9958
|
-
"principalId",
|
|
9959
10384
|
"resourceType"
|
|
9960
10385
|
],
|
|
9961
10386
|
"title": "PolicyInput",
|
|
@@ -13351,6 +13776,11 @@
|
|
|
13351
13776
|
"description": "End-user session token: `Authorization: Bearer <sess_…>`.",
|
|
13352
13777
|
"scheme": "bearer",
|
|
13353
13778
|
"type": "http"
|
|
13779
|
+
},
|
|
13780
|
+
"memberToken": {
|
|
13781
|
+
"description": "Member session token: `Authorization: Bearer <mem_…>` (empleado que opera la org).",
|
|
13782
|
+
"scheme": "bearer",
|
|
13783
|
+
"type": "http"
|
|
13354
13784
|
}
|
|
13355
13785
|
}
|
|
13356
13786
|
},
|
|
@@ -13365,7 +13795,7 @@
|
|
|
13365
13795
|
"get": {
|
|
13366
13796
|
"callbacks": {},
|
|
13367
13797
|
"description": "Como el GET humano, pero la cuenta sale del access token. Es lo que `hablala pull`/`init` llama.",
|
|
13368
|
-
"operationId": "
|
|
13798
|
+
"operationId": "get /v1/account-config",
|
|
13369
13799
|
"parameters": [],
|
|
13370
13800
|
"responses": {
|
|
13371
13801
|
"200": {
|
|
@@ -13397,7 +13827,7 @@
|
|
|
13397
13827
|
"put": {
|
|
13398
13828
|
"callbacks": {},
|
|
13399
13829
|
"description": "Como el PUT humano: reconciliación transaccional crear/actualizar/archivar; `?dry_run=true` devuelve el diff sin aplicar. Con un access token no hay usuario creador: los agentes nuevos deben declarar `ownerUserId`.",
|
|
13400
|
-
"operationId": "
|
|
13830
|
+
"operationId": "put /v1/account-config",
|
|
13401
13831
|
"parameters": [
|
|
13402
13832
|
{
|
|
13403
13833
|
"description": "Devuelve el plan (diff) sin aplicar nada.",
|
|
@@ -13475,7 +13905,7 @@
|
|
|
13475
13905
|
"get": {
|
|
13476
13906
|
"callbacks": {},
|
|
13477
13907
|
"description": "Devuelve el catálogo de activities declarables (enum cerrado, con su contrato de `config`) y los tipos de estado. El agente lo lee ANTES de escribir el manifiesto para no adivinar nombres ni claves — el espacio válido vive en el contrato, no en su memoria.",
|
|
13478
|
-
"operationId": "
|
|
13908
|
+
"operationId": "get /v1/account-config/capabilities",
|
|
13479
13909
|
"parameters": [],
|
|
13480
13910
|
"responses": {
|
|
13481
13911
|
"200": {
|
|
@@ -13509,7 +13939,7 @@
|
|
|
13509
13939
|
"post": {
|
|
13510
13940
|
"callbacks": {},
|
|
13511
13941
|
"description": "Corre los casos `evals` de cada agente del manifiesto (patrón promptfoo): valida el manifiesto, resuelve cada agente aplicado y comprueba las aserciones sobre su comportamiento. Determinista por defecto (proveedor stub); `?live=true` corre contra el LLM real del agente. Es lo que `hablala eval` llama.",
|
|
13512
|
-
"operationId": "
|
|
13942
|
+
"operationId": "post /v1/account-config/eval",
|
|
13513
13943
|
"parameters": [
|
|
13514
13944
|
{
|
|
13515
13945
|
"description": "Corre contra el LLM real (no determinista) en vez del stub.",
|
|
@@ -13572,11 +14002,153 @@
|
|
|
13572
14002
|
]
|
|
13573
14003
|
}
|
|
13574
14004
|
},
|
|
14005
|
+
"/v1/actions/{slug}": {
|
|
14006
|
+
"post": {
|
|
14007
|
+
"callbacks": {},
|
|
14008
|
+
"description": "Corre los steps de la action `slug` en UNA transacción (todo-o-nada), interpolando el input, y devuelve los records creados por step. `create_rental`/`register_return` y similares. Gate: records:create.",
|
|
14009
|
+
"operationId": "post /v1/actions/{slug}",
|
|
14010
|
+
"parameters": [
|
|
14011
|
+
{
|
|
14012
|
+
"description": "Slug de la action a ejecutar.",
|
|
14013
|
+
"in": "path",
|
|
14014
|
+
"name": "slug",
|
|
14015
|
+
"required": true,
|
|
14016
|
+
"schema": {
|
|
14017
|
+
"type": "string",
|
|
14018
|
+
"x-struct": null,
|
|
14019
|
+
"x-validate": null
|
|
14020
|
+
}
|
|
14021
|
+
}
|
|
14022
|
+
],
|
|
14023
|
+
"requestBody": {
|
|
14024
|
+
"content": {
|
|
14025
|
+
"application/json": {
|
|
14026
|
+
"schema": {
|
|
14027
|
+
"$ref": "#/components/schemas/ActionRunRequest"
|
|
14028
|
+
}
|
|
14029
|
+
}
|
|
14030
|
+
},
|
|
14031
|
+
"description": "Input de la action",
|
|
14032
|
+
"required": false
|
|
14033
|
+
},
|
|
14034
|
+
"responses": {
|
|
14035
|
+
"200": {
|
|
14036
|
+
"content": {
|
|
14037
|
+
"application/json": {
|
|
14038
|
+
"schema": {
|
|
14039
|
+
"$ref": "#/components/schemas/ActionRunResponse"
|
|
14040
|
+
}
|
|
14041
|
+
}
|
|
14042
|
+
},
|
|
14043
|
+
"description": "Resultado por step"
|
|
14044
|
+
},
|
|
14045
|
+
"403": {
|
|
14046
|
+
"content": {
|
|
14047
|
+
"application/json": {
|
|
14048
|
+
"schema": {
|
|
14049
|
+
"$ref": "#/components/schemas/Error"
|
|
14050
|
+
}
|
|
14051
|
+
}
|
|
14052
|
+
},
|
|
14053
|
+
"description": "Sin permiso"
|
|
14054
|
+
},
|
|
14055
|
+
"404": {
|
|
14056
|
+
"content": {
|
|
14057
|
+
"application/json": {
|
|
14058
|
+
"schema": {
|
|
14059
|
+
"$ref": "#/components/schemas/Error"
|
|
14060
|
+
}
|
|
14061
|
+
}
|
|
14062
|
+
},
|
|
14063
|
+
"description": "Action desconocida"
|
|
14064
|
+
},
|
|
14065
|
+
"422": {
|
|
14066
|
+
"content": {
|
|
14067
|
+
"application/json": {
|
|
14068
|
+
"schema": {
|
|
14069
|
+
"$ref": "#/components/schemas/Error"
|
|
14070
|
+
}
|
|
14071
|
+
}
|
|
14072
|
+
},
|
|
14073
|
+
"description": "Fallo de un step (rollback total)"
|
|
14074
|
+
}
|
|
14075
|
+
},
|
|
14076
|
+
"summary": "Ejecutar una action transaccional",
|
|
14077
|
+
"tags": [
|
|
14078
|
+
"actions"
|
|
14079
|
+
]
|
|
14080
|
+
}
|
|
14081
|
+
},
|
|
14082
|
+
"/v1/aggregate": {
|
|
14083
|
+
"post": {
|
|
14084
|
+
"callbacks": {},
|
|
14085
|
+
"description": "Agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), bajo la misma gobernanza (RBAC + ABAC default-deny) que la lectura puntual. Reemplaza los reportes que serían RPCs de SQL por-tenant.",
|
|
14086
|
+
"operationId": "post /v1/aggregate",
|
|
14087
|
+
"parameters": [],
|
|
14088
|
+
"requestBody": {
|
|
14089
|
+
"content": {
|
|
14090
|
+
"application/json": {
|
|
14091
|
+
"schema": {
|
|
14092
|
+
"$ref": "#/components/schemas/AggregateQueryRequest"
|
|
14093
|
+
}
|
|
14094
|
+
}
|
|
14095
|
+
},
|
|
14096
|
+
"description": "Aggregation query",
|
|
14097
|
+
"required": false
|
|
14098
|
+
},
|
|
14099
|
+
"responses": {
|
|
14100
|
+
"200": {
|
|
14101
|
+
"content": {
|
|
14102
|
+
"application/json": {
|
|
14103
|
+
"schema": {
|
|
14104
|
+
"$ref": "#/components/schemas/AggregateResultResponse"
|
|
14105
|
+
}
|
|
14106
|
+
}
|
|
14107
|
+
},
|
|
14108
|
+
"description": "Grupos agregados"
|
|
14109
|
+
},
|
|
14110
|
+
"403": {
|
|
14111
|
+
"content": {
|
|
14112
|
+
"application/json": {
|
|
14113
|
+
"schema": {
|
|
14114
|
+
"$ref": "#/components/schemas/Error"
|
|
14115
|
+
}
|
|
14116
|
+
}
|
|
14117
|
+
},
|
|
14118
|
+
"description": "Sin permiso"
|
|
14119
|
+
},
|
|
14120
|
+
"404": {
|
|
14121
|
+
"content": {
|
|
14122
|
+
"application/json": {
|
|
14123
|
+
"schema": {
|
|
14124
|
+
"$ref": "#/components/schemas/Error"
|
|
14125
|
+
}
|
|
14126
|
+
}
|
|
14127
|
+
},
|
|
14128
|
+
"description": "Objeto desconocido"
|
|
14129
|
+
},
|
|
14130
|
+
"422": {
|
|
14131
|
+
"content": {
|
|
14132
|
+
"application/json": {
|
|
14133
|
+
"schema": {
|
|
14134
|
+
"$ref": "#/components/schemas/Error"
|
|
14135
|
+
}
|
|
14136
|
+
}
|
|
14137
|
+
},
|
|
14138
|
+
"description": "Consulta inválida"
|
|
14139
|
+
}
|
|
14140
|
+
},
|
|
14141
|
+
"summary": "Ejecutar una aggregation query",
|
|
14142
|
+
"tags": [
|
|
14143
|
+
"query"
|
|
14144
|
+
]
|
|
14145
|
+
}
|
|
14146
|
+
},
|
|
13575
14147
|
"/v1/device-links": {
|
|
13576
14148
|
"post": {
|
|
13577
14149
|
"callbacks": {},
|
|
13578
14150
|
"description": "Inicia la vinculación de la web: devuelve un `linkCode` para pintar el QR que el teléfono escaneará. Público (es un flujo de login). El teléfono es la raíz de identidad; la web hereda la sesión al aprobarse (modelo WhatsApp *linked devices*).",
|
|
13579
|
-
"operationId": "
|
|
14151
|
+
"operationId": "post /v1/device-links",
|
|
13580
14152
|
"parameters": [],
|
|
13581
14153
|
"requestBody": {
|
|
13582
14154
|
"content": {
|
|
@@ -13622,7 +14194,7 @@
|
|
|
13622
14194
|
"get": {
|
|
13623
14195
|
"callbacks": {},
|
|
13624
14196
|
"description": "Devuelve `pending` (sigue esperando), `linked` (aprobado: incluye `user` y el `token` de sesión web, SOLO en el primer poll) o `denied`. Público: el `linkCode` es la credencial.",
|
|
13625
|
-
"operationId": "
|
|
14197
|
+
"operationId": "get /v1/device-links/{link_code}",
|
|
13626
14198
|
"parameters": [
|
|
13627
14199
|
{
|
|
13628
14200
|
"description": "El `linkCode` del QR (`dlnk_…`).",
|
|
@@ -13679,7 +14251,7 @@
|
|
|
13679
14251
|
"post": {
|
|
13680
14252
|
"callbacks": {},
|
|
13681
14253
|
"description": "El teléfono AUTENTICADO aprueba la vinculación de la web (tras escanear el QR). Crea la sesión web y emite su token. Acción sensible: la app debe mostrar qué se está vinculando.",
|
|
13682
|
-
"operationId": "
|
|
14254
|
+
"operationId": "post /v1/device-links/{link_code}/approve",
|
|
13683
14255
|
"parameters": [
|
|
13684
14256
|
{
|
|
13685
14257
|
"description": "El `linkCode` escaneado.",
|
|
@@ -13728,7 +14300,7 @@
|
|
|
13728
14300
|
"post": {
|
|
13729
14301
|
"callbacks": {},
|
|
13730
14302
|
"description": "El teléfono AUTENTICADO rechaza la vinculación de la web.",
|
|
13731
|
-
"operationId": "
|
|
14303
|
+
"operationId": "post /v1/device-links/{link_code}/deny",
|
|
13732
14304
|
"parameters": [
|
|
13733
14305
|
{
|
|
13734
14306
|
"description": "El `linkCode` escaneado.",
|
|
@@ -13777,7 +14349,7 @@
|
|
|
13777
14349
|
"post": {
|
|
13778
14350
|
"callbacks": {},
|
|
13779
14351
|
"description": "Conecta dos records vía un tipo de relación (`relationship` = slug). Idempotente: crear la misma arista dos veces no falla.",
|
|
13780
|
-
"operationId": "
|
|
14352
|
+
"operationId": "post /v1/edges",
|
|
13781
14353
|
"parameters": [],
|
|
13782
14354
|
"requestBody": {
|
|
13783
14355
|
"content": {
|
|
@@ -13831,7 +14403,7 @@
|
|
|
13831
14403
|
"/v1/edges/{id}": {
|
|
13832
14404
|
"delete": {
|
|
13833
14405
|
"callbacks": {},
|
|
13834
|
-
"operationId": "
|
|
14406
|
+
"operationId": "delete /v1/edges/{id}",
|
|
13835
14407
|
"parameters": [
|
|
13836
14408
|
{
|
|
13837
14409
|
"description": "",
|
|
@@ -13860,7 +14432,7 @@
|
|
|
13860
14432
|
"post": {
|
|
13861
14433
|
"callbacks": {},
|
|
13862
14434
|
"description": "Devuelve el grafo de datos del tenant como `nodes` + `edges` planos (knowledge graph), acotado por `limit` y ordenado por grado desc (los nodos más conectados primero). Filtra por el ABAC del scope. Base de la vista de grafo global.",
|
|
13863
|
-
"operationId": "
|
|
14435
|
+
"operationId": "post /v1/graph",
|
|
13864
14436
|
"parameters": [],
|
|
13865
14437
|
"requestBody": {
|
|
13866
14438
|
"content": {
|
|
@@ -13905,7 +14477,7 @@
|
|
|
13905
14477
|
"post": {
|
|
13906
14478
|
"callbacks": {},
|
|
13907
14479
|
"description": "Devuelve el vecindario de un nodo — sus vecinos directos (1 salto) + las aristas que los unen — como `nodes` + `edges`. Es el *expand-on-demand* (progressive disclosure) para explorar el grafo sin cargarlo entero.",
|
|
13908
|
-
"operationId": "
|
|
14480
|
+
"operationId": "post /v1/graph/expand",
|
|
13909
14481
|
"parameters": [],
|
|
13910
14482
|
"requestBody": {
|
|
13911
14483
|
"content": {
|
|
@@ -13960,7 +14532,7 @@
|
|
|
13960
14532
|
"post": {
|
|
13961
14533
|
"callbacks": {},
|
|
13962
14534
|
"description": "Canjea el token de una invitación (enviado por email) para unirse a la organización. Requiere que el email autenticado coincida con el invitado.",
|
|
13963
|
-
"operationId": "
|
|
14535
|
+
"operationId": "post /v1/invitations/accept",
|
|
13964
14536
|
"parameters": [],
|
|
13965
14537
|
"requestBody": {
|
|
13966
14538
|
"content": {
|
|
@@ -14025,7 +14597,7 @@
|
|
|
14025
14597
|
"get": {
|
|
14026
14598
|
"callbacks": {},
|
|
14027
14599
|
"description": "Devuelve los datos públicos de una invitación (organización y quién invita) a partir de su token, sin consumirla ni requerir sesión. Sirve para mostrar el contexto antes de que el invitado entre.",
|
|
14028
|
-
"operationId": "
|
|
14600
|
+
"operationId": "get /v1/invitations/preview",
|
|
14029
14601
|
"parameters": [
|
|
14030
14602
|
{
|
|
14031
14603
|
"description": "",
|
|
@@ -14072,7 +14644,7 @@
|
|
|
14072
14644
|
"post": {
|
|
14073
14645
|
"callbacks": {},
|
|
14074
14646
|
"description": "Canjea el secreto de un organization invite link para unirse a la organización con el rol configurado en el link. A diferencia de la invitación por email, no requiere email-match: el link es el secreto.",
|
|
14075
|
-
"operationId": "
|
|
14647
|
+
"operationId": "post /v1/invite-links/accept",
|
|
14076
14648
|
"parameters": [],
|
|
14077
14649
|
"requestBody": {
|
|
14078
14650
|
"content": {
|
|
@@ -14127,7 +14699,7 @@
|
|
|
14127
14699
|
"get": {
|
|
14128
14700
|
"callbacks": {},
|
|
14129
14701
|
"description": "Devuelve la organización (nombre + icono) a la que lleva un organization invite link, sin consumirlo ni requerir sesión. Sirve para mostrar a dónde te unes en `/join` antes de confirmar. Siempre 200: el `status` del cuerpo distingue `valid` de `invalid`.",
|
|
14130
|
-
"operationId": "
|
|
14702
|
+
"operationId": "get /v1/invite-links/preview",
|
|
14131
14703
|
"parameters": [
|
|
14132
14704
|
{
|
|
14133
14705
|
"description": "",
|
|
@@ -14164,7 +14736,7 @@
|
|
|
14164
14736
|
"get": {
|
|
14165
14737
|
"callbacks": {},
|
|
14166
14738
|
"description": "Lista las sesiones web/desktop vinculadas del usuario autenticado.",
|
|
14167
|
-
"operationId": "
|
|
14739
|
+
"operationId": "get /v1/linked-devices",
|
|
14168
14740
|
"parameters": [],
|
|
14169
14741
|
"responses": {
|
|
14170
14742
|
"200": {
|
|
@@ -14188,7 +14760,7 @@
|
|
|
14188
14760
|
"delete": {
|
|
14189
14761
|
"callbacks": {},
|
|
14190
14762
|
"description": "Mata la sesión web/desktop de un dispositivo vinculado (borra su token en cascada). Idempotente. Solo dispositivos propios.",
|
|
14191
|
-
"operationId": "
|
|
14763
|
+
"operationId": "delete /v1/linked-devices/{id}",
|
|
14192
14764
|
"parameters": [
|
|
14193
14765
|
{
|
|
14194
14766
|
"description": "Id público del dispositivo (`dev_…`).",
|
|
@@ -14226,7 +14798,7 @@
|
|
|
14226
14798
|
"/v1/me/blocks": {
|
|
14227
14799
|
"get": {
|
|
14228
14800
|
"callbacks": {},
|
|
14229
|
-
"operationId": "
|
|
14801
|
+
"operationId": "get /v1/me/blocks",
|
|
14230
14802
|
"parameters": [],
|
|
14231
14803
|
"responses": {
|
|
14232
14804
|
"200": {
|
|
@@ -14248,7 +14820,7 @@
|
|
|
14248
14820
|
"post": {
|
|
14249
14821
|
"callbacks": {},
|
|
14250
14822
|
"description": "Idempotente: bloquear a quien ya está bloqueado no falla. Corta el DM en ambos sentidos.",
|
|
14251
|
-
"operationId": "
|
|
14823
|
+
"operationId": "post /v1/me/blocks",
|
|
14252
14824
|
"parameters": [],
|
|
14253
14825
|
"requestBody": {
|
|
14254
14826
|
"content": {
|
|
@@ -14285,7 +14857,7 @@
|
|
|
14285
14857
|
"/v1/me/blocks/{user_id}": {
|
|
14286
14858
|
"delete": {
|
|
14287
14859
|
"callbacks": {},
|
|
14288
|
-
"operationId": "
|
|
14860
|
+
"operationId": "delete /v1/me/blocks/{user_id}",
|
|
14289
14861
|
"parameters": [
|
|
14290
14862
|
{
|
|
14291
14863
|
"description": "",
|
|
@@ -14313,7 +14885,7 @@
|
|
|
14313
14885
|
"/v1/me/conversations": {
|
|
14314
14886
|
"get": {
|
|
14315
14887
|
"callbacks": {},
|
|
14316
|
-
"operationId": "
|
|
14888
|
+
"operationId": "get /v1/me/conversations",
|
|
14317
14889
|
"parameters": [],
|
|
14318
14890
|
"responses": {
|
|
14319
14891
|
"200": {
|
|
@@ -14335,7 +14907,7 @@
|
|
|
14335
14907
|
"post": {
|
|
14336
14908
|
"callbacks": {},
|
|
14337
14909
|
"description": "Grupo de consumo (estilo app de consumo): un grupo con nombre + foto SIN organización. Los miembros iniciales se validan por bloqueos (no por tenant). Nace visible para sus miembros.",
|
|
14338
|
-
"operationId": "
|
|
14910
|
+
"operationId": "post /v1/me/conversations",
|
|
14339
14911
|
"parameters": [],
|
|
14340
14912
|
"requestBody": {
|
|
14341
14913
|
"content": {
|
|
@@ -14380,7 +14952,7 @@
|
|
|
14380
14952
|
"post": {
|
|
14381
14953
|
"callbacks": {},
|
|
14382
14954
|
"description": "Idempotente por conjunto de participantes en toda la plataforma. Destinatarios validados por bloqueos (default abierto), no por membresía de organización.",
|
|
14383
|
-
"operationId": "
|
|
14955
|
+
"operationId": "post /v1/me/conversations/direct",
|
|
14384
14956
|
"parameters": [],
|
|
14385
14957
|
"requestBody": {
|
|
14386
14958
|
"content": {
|
|
@@ -14425,7 +14997,7 @@
|
|
|
14425
14997
|
"post": {
|
|
14426
14998
|
"callbacks": {},
|
|
14427
14999
|
"description": "Flujo de 'nueva conversación' de consumo (estilo app de consumo): el DM personal no existe hasta su primer mensaje. Idempotente por conjunto de participantes en toda la plataforma. Los destinatarios se validan por bloqueos (default abierto), no por membresía de organización.",
|
|
14428
|
-
"operationId": "
|
|
15000
|
+
"operationId": "post /v1/me/conversations/direct/messages",
|
|
14429
15001
|
"parameters": [],
|
|
14430
15002
|
"requestBody": {
|
|
14431
15003
|
"content": {
|
|
@@ -14470,7 +15042,7 @@
|
|
|
14470
15042
|
"get": {
|
|
14471
15043
|
"callbacks": {},
|
|
14472
15044
|
"description": "Las conversaciones donde un no-contacto te escribió (estilo Instagram): aparte del inbox, no marcan no-leídos hasta que las aceptas. Ver ADR-022.",
|
|
14473
|
-
"operationId": "
|
|
15045
|
+
"operationId": "get /v1/me/conversations/requests",
|
|
14474
15046
|
"parameters": [],
|
|
14475
15047
|
"responses": {
|
|
14476
15048
|
"200": {
|
|
@@ -14493,7 +15065,7 @@
|
|
|
14493
15065
|
"/v1/me/conversations/{conversation_id}/accept": {
|
|
14494
15066
|
"post": {
|
|
14495
15067
|
"callbacks": {},
|
|
14496
|
-
"operationId": "
|
|
15068
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/accept",
|
|
14497
15069
|
"parameters": [
|
|
14498
15070
|
{
|
|
14499
15071
|
"description": "",
|
|
@@ -14538,7 +15110,7 @@
|
|
|
14538
15110
|
"/v1/me/conversations/{conversation_id}/archive": {
|
|
14539
15111
|
"delete": {
|
|
14540
15112
|
"callbacks": {},
|
|
14541
|
-
"operationId": "
|
|
15113
|
+
"operationId": "delete /v1/me/conversations/{conversation_id}/archive",
|
|
14542
15114
|
"parameters": [
|
|
14543
15115
|
{
|
|
14544
15116
|
"description": "",
|
|
@@ -14571,7 +15143,7 @@
|
|
|
14571
15143
|
},
|
|
14572
15144
|
"post": {
|
|
14573
15145
|
"callbacks": {},
|
|
14574
|
-
"operationId": "
|
|
15146
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/archive",
|
|
14575
15147
|
"parameters": [
|
|
14576
15148
|
{
|
|
14577
15149
|
"description": "",
|
|
@@ -14606,7 +15178,7 @@
|
|
|
14606
15178
|
"/v1/me/conversations/{conversation_id}/media": {
|
|
14607
15179
|
"get": {
|
|
14608
15180
|
"callbacks": {},
|
|
14609
|
-
"operationId": "
|
|
15181
|
+
"operationId": "get /v1/me/conversations/{conversation_id}/media",
|
|
14610
15182
|
"parameters": [
|
|
14611
15183
|
{
|
|
14612
15184
|
"description": "",
|
|
@@ -14674,7 +15246,7 @@
|
|
|
14674
15246
|
"/v1/me/conversations/{conversation_id}/members": {
|
|
14675
15247
|
"get": {
|
|
14676
15248
|
"callbacks": {},
|
|
14677
|
-
"operationId": "
|
|
15249
|
+
"operationId": "get /v1/me/conversations/{conversation_id}/members",
|
|
14678
15250
|
"parameters": [
|
|
14679
15251
|
{
|
|
14680
15252
|
"description": "",
|
|
@@ -14708,7 +15280,7 @@
|
|
|
14708
15280
|
"post": {
|
|
14709
15281
|
"callbacks": {},
|
|
14710
15282
|
"description": "Idempotente. El destinatario debe ser alcanzable: existente/activo y sin bloqueo con quien invita (gate simétrico de consumo).",
|
|
14711
|
-
"operationId": "
|
|
15283
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/members",
|
|
14712
15284
|
"parameters": [
|
|
14713
15285
|
{
|
|
14714
15286
|
"description": "",
|
|
@@ -14764,7 +15336,7 @@
|
|
|
14764
15336
|
"/v1/me/conversations/{conversation_id}/members/{user_id}": {
|
|
14765
15337
|
"delete": {
|
|
14766
15338
|
"callbacks": {},
|
|
14767
|
-
"operationId": "
|
|
15339
|
+
"operationId": "delete /v1/me/conversations/{conversation_id}/members/{user_id}",
|
|
14768
15340
|
"parameters": [
|
|
14769
15341
|
{
|
|
14770
15342
|
"description": "",
|
|
@@ -14813,7 +15385,7 @@
|
|
|
14813
15385
|
"/v1/me/conversations/{conversation_id}/members/{user_id}/ban": {
|
|
14814
15386
|
"delete": {
|
|
14815
15387
|
"callbacks": {},
|
|
14816
|
-
"operationId": "
|
|
15388
|
+
"operationId": "delete /v1/me/conversations/{conversation_id}/members/{user_id}/ban",
|
|
14817
15389
|
"parameters": [
|
|
14818
15390
|
{
|
|
14819
15391
|
"description": "",
|
|
@@ -14861,7 +15433,7 @@
|
|
|
14861
15433
|
"post": {
|
|
14862
15434
|
"callbacks": {},
|
|
14863
15435
|
"description": "Solo admins. Bloquea al usuario: no puede volver ni ser re-agregado mientras el ban siga vigente. Sin `until` = permanente; con `until` (ISO 8601) = temporal.",
|
|
14864
|
-
"operationId": "
|
|
15436
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/members/{user_id}/ban",
|
|
14865
15437
|
"parameters": [
|
|
14866
15438
|
{
|
|
14867
15439
|
"description": "",
|
|
@@ -14921,7 +15493,7 @@
|
|
|
14921
15493
|
"/v1/me/conversations/{conversation_id}/members/{user_id}/role": {
|
|
14922
15494
|
"patch": {
|
|
14923
15495
|
"callbacks": {},
|
|
14924
|
-
"operationId": "
|
|
15496
|
+
"operationId": "patch /v1/me/conversations/{conversation_id}/members/{user_id}/role",
|
|
14925
15497
|
"parameters": [
|
|
14926
15498
|
{
|
|
14927
15499
|
"description": "",
|
|
@@ -14988,7 +15560,7 @@
|
|
|
14988
15560
|
"/v1/me/conversations/{conversation_id}/messages": {
|
|
14989
15561
|
"get": {
|
|
14990
15562
|
"callbacks": {},
|
|
14991
|
-
"operationId": "
|
|
15563
|
+
"operationId": "get /v1/me/conversations/{conversation_id}/messages",
|
|
14992
15564
|
"parameters": [
|
|
14993
15565
|
{
|
|
14994
15566
|
"description": "",
|
|
@@ -15032,7 +15604,7 @@
|
|
|
15032
15604
|
},
|
|
15033
15605
|
"post": {
|
|
15034
15606
|
"callbacks": {},
|
|
15035
|
-
"operationId": "
|
|
15607
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/messages",
|
|
15036
15608
|
"parameters": [
|
|
15037
15609
|
{
|
|
15038
15610
|
"description": "",
|
|
@@ -15088,7 +15660,7 @@
|
|
|
15088
15660
|
"/v1/me/conversations/{conversation_id}/messages/changes": {
|
|
15089
15661
|
"get": {
|
|
15090
15662
|
"callbacks": {},
|
|
15091
|
-
"operationId": "
|
|
15663
|
+
"operationId": "get /v1/me/conversations/{conversation_id}/messages/changes",
|
|
15092
15664
|
"parameters": [
|
|
15093
15665
|
{
|
|
15094
15666
|
"description": "",
|
|
@@ -15144,7 +15716,7 @@
|
|
|
15144
15716
|
"/v1/me/conversations/{conversation_id}/messages/{id}": {
|
|
15145
15717
|
"delete": {
|
|
15146
15718
|
"callbacks": {},
|
|
15147
|
-
"operationId": "
|
|
15719
|
+
"operationId": "delete /v1/me/conversations/{conversation_id}/messages/{id}",
|
|
15148
15720
|
"parameters": [
|
|
15149
15721
|
{
|
|
15150
15722
|
"description": "",
|
|
@@ -15191,7 +15763,7 @@
|
|
|
15191
15763
|
},
|
|
15192
15764
|
"patch": {
|
|
15193
15765
|
"callbacks": {},
|
|
15194
|
-
"operationId": "
|
|
15766
|
+
"operationId": "patch /v1/me/conversations/{conversation_id}/messages/{id}",
|
|
15195
15767
|
"parameters": [
|
|
15196
15768
|
{
|
|
15197
15769
|
"description": "",
|
|
@@ -15256,7 +15828,7 @@
|
|
|
15256
15828
|
},
|
|
15257
15829
|
"put": {
|
|
15258
15830
|
"callbacks": {},
|
|
15259
|
-
"operationId": "
|
|
15831
|
+
"operationId": "put /v1/me/conversations/{conversation_id}/messages/{id}",
|
|
15260
15832
|
"parameters": [
|
|
15261
15833
|
{
|
|
15262
15834
|
"description": "",
|
|
@@ -15323,7 +15895,7 @@
|
|
|
15323
15895
|
"/v1/me/conversations/{conversation_id}/messages/{message_id}/reactions": {
|
|
15324
15896
|
"post": {
|
|
15325
15897
|
"callbacks": {},
|
|
15326
|
-
"operationId": "
|
|
15898
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/messages/{message_id}/reactions",
|
|
15327
15899
|
"parameters": [
|
|
15328
15900
|
{
|
|
15329
15901
|
"description": "",
|
|
@@ -15383,7 +15955,7 @@
|
|
|
15383
15955
|
"/v1/me/conversations/{conversation_id}/messages/{message_id}/reactions/{emoji}": {
|
|
15384
15956
|
"delete": {
|
|
15385
15957
|
"callbacks": {},
|
|
15386
|
-
"operationId": "
|
|
15958
|
+
"operationId": "delete /v1/me/conversations/{conversation_id}/messages/{message_id}/reactions/{emoji}",
|
|
15387
15959
|
"parameters": [
|
|
15388
15960
|
{
|
|
15389
15961
|
"description": "",
|
|
@@ -15443,7 +16015,7 @@
|
|
|
15443
16015
|
"/v1/me/conversations/{conversation_id}/mute": {
|
|
15444
16016
|
"delete": {
|
|
15445
16017
|
"callbacks": {},
|
|
15446
|
-
"operationId": "
|
|
16018
|
+
"operationId": "delete /v1/me/conversations/{conversation_id}/mute",
|
|
15447
16019
|
"parameters": [
|
|
15448
16020
|
{
|
|
15449
16021
|
"description": "",
|
|
@@ -15476,7 +16048,7 @@
|
|
|
15476
16048
|
},
|
|
15477
16049
|
"post": {
|
|
15478
16050
|
"callbacks": {},
|
|
15479
|
-
"operationId": "
|
|
16051
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/mute",
|
|
15480
16052
|
"parameters": [
|
|
15481
16053
|
{
|
|
15482
16054
|
"description": "",
|
|
@@ -15522,7 +16094,7 @@
|
|
|
15522
16094
|
"/v1/me/conversations/{conversation_id}/pin": {
|
|
15523
16095
|
"delete": {
|
|
15524
16096
|
"callbacks": {},
|
|
15525
|
-
"operationId": "
|
|
16097
|
+
"operationId": "delete /v1/me/conversations/{conversation_id}/pin",
|
|
15526
16098
|
"parameters": [
|
|
15527
16099
|
{
|
|
15528
16100
|
"description": "",
|
|
@@ -15555,7 +16127,7 @@
|
|
|
15555
16127
|
},
|
|
15556
16128
|
"post": {
|
|
15557
16129
|
"callbacks": {},
|
|
15558
|
-
"operationId": "
|
|
16130
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/pin",
|
|
15559
16131
|
"parameters": [
|
|
15560
16132
|
{
|
|
15561
16133
|
"description": "",
|
|
@@ -15590,7 +16162,7 @@
|
|
|
15590
16162
|
"/v1/me/conversations/{conversation_id}/read": {
|
|
15591
16163
|
"put": {
|
|
15592
16164
|
"callbacks": {},
|
|
15593
|
-
"operationId": "
|
|
16165
|
+
"operationId": "put /v1/me/conversations/{conversation_id}/read",
|
|
15594
16166
|
"parameters": [
|
|
15595
16167
|
{
|
|
15596
16168
|
"description": "",
|
|
@@ -15629,7 +16201,7 @@
|
|
|
15629
16201
|
"/v1/me/conversations/{conversation_id}/report": {
|
|
15630
16202
|
"post": {
|
|
15631
16203
|
"callbacks": {},
|
|
15632
|
-
"operationId": "
|
|
16204
|
+
"operationId": "post /v1/me/conversations/{conversation_id}/report",
|
|
15633
16205
|
"parameters": [
|
|
15634
16206
|
{
|
|
15635
16207
|
"description": "",
|
|
@@ -15669,7 +16241,7 @@
|
|
|
15669
16241
|
"delete": {
|
|
15670
16242
|
"callbacks": {},
|
|
15671
16243
|
"description": "Estilo Instagram 'Eliminar': quita la conversación de MI bandeja de solicitudes (borra mi membresía de solicitud). No la borra para quien la envió. Ver ADR-022.",
|
|
15672
|
-
"operationId": "
|
|
16244
|
+
"operationId": "delete /v1/me/conversations/{conversation_id}/request",
|
|
15673
16245
|
"parameters": [
|
|
15674
16246
|
{
|
|
15675
16247
|
"description": "",
|
|
@@ -15707,7 +16279,7 @@
|
|
|
15707
16279
|
"/v1/me/conversations/{id}": {
|
|
15708
16280
|
"get": {
|
|
15709
16281
|
"callbacks": {},
|
|
15710
|
-
"operationId": "
|
|
16282
|
+
"operationId": "get /v1/me/conversations/{id}",
|
|
15711
16283
|
"parameters": [
|
|
15712
16284
|
{
|
|
15713
16285
|
"description": "",
|
|
@@ -15750,7 +16322,7 @@
|
|
|
15750
16322
|
},
|
|
15751
16323
|
"patch": {
|
|
15752
16324
|
"callbacks": {},
|
|
15753
|
-
"operationId": "
|
|
16325
|
+
"operationId": "patch /v1/me/conversations/{id}",
|
|
15754
16326
|
"parameters": [
|
|
15755
16327
|
{
|
|
15756
16328
|
"description": "",
|
|
@@ -15806,7 +16378,7 @@
|
|
|
15806
16378
|
"/v1/me/friends": {
|
|
15807
16379
|
"get": {
|
|
15808
16380
|
"callbacks": {},
|
|
15809
|
-
"operationId": "
|
|
16381
|
+
"operationId": "get /v1/me/friends",
|
|
15810
16382
|
"parameters": [],
|
|
15811
16383
|
"responses": {
|
|
15812
16384
|
"200": {
|
|
@@ -15830,7 +16402,7 @@
|
|
|
15830
16402
|
"get": {
|
|
15831
16403
|
"callbacks": {},
|
|
15832
16404
|
"description": "Devuelve las relaciones (libreta + solicitudes entrantes) mutadas desde `since`, INCLUYENDO tombstones (`deletedAt` no nulo) para propagar borrados. Es el carril de sincronización del cliente local-first (ADR-021/022): pinta desde su caché y aplica este delta detrás. Sin `since`, equivale al primer sync completo.",
|
|
15833
|
-
"operationId": "
|
|
16405
|
+
"operationId": "get /v1/me/friends/changes",
|
|
15834
16406
|
"parameters": [
|
|
15835
16407
|
{
|
|
15836
16408
|
"description": "Cursor ISO-8601 (UTC): trae solo lo mutado después de este instante.",
|
|
@@ -15865,7 +16437,7 @@
|
|
|
15865
16437
|
"/v1/me/friends/requests": {
|
|
15866
16438
|
"get": {
|
|
15867
16439
|
"callbacks": {},
|
|
15868
|
-
"operationId": "
|
|
16440
|
+
"operationId": "get /v1/me/friends/requests",
|
|
15869
16441
|
"parameters": [],
|
|
15870
16442
|
"responses": {
|
|
15871
16443
|
"200": {
|
|
@@ -15886,7 +16458,7 @@
|
|
|
15886
16458
|
},
|
|
15887
16459
|
"post": {
|
|
15888
16460
|
"callbacks": {},
|
|
15889
|
-
"operationId": "
|
|
16461
|
+
"operationId": "post /v1/me/friends/requests",
|
|
15890
16462
|
"parameters": [],
|
|
15891
16463
|
"requestBody": {
|
|
15892
16464
|
"content": {
|
|
@@ -15930,7 +16502,7 @@
|
|
|
15930
16502
|
"/v1/me/friends/requests/{id}/accept": {
|
|
15931
16503
|
"post": {
|
|
15932
16504
|
"callbacks": {},
|
|
15933
|
-
"operationId": "
|
|
16505
|
+
"operationId": "post /v1/me/friends/requests/{id}/accept",
|
|
15934
16506
|
"parameters": [
|
|
15935
16507
|
{
|
|
15936
16508
|
"description": "",
|
|
@@ -15958,7 +16530,7 @@
|
|
|
15958
16530
|
"/v1/me/friends/requests/{id}/reject": {
|
|
15959
16531
|
"post": {
|
|
15960
16532
|
"callbacks": {},
|
|
15961
|
-
"operationId": "
|
|
16533
|
+
"operationId": "post /v1/me/friends/requests/{id}/reject",
|
|
15962
16534
|
"parameters": [
|
|
15963
16535
|
{
|
|
15964
16536
|
"description": "",
|
|
@@ -15987,7 +16559,7 @@
|
|
|
15987
16559
|
"post": {
|
|
15988
16560
|
"callbacks": {},
|
|
15989
16561
|
"description": "El cliente sube hashes de pares (base64 de SHA-256 de 32 bytes) de su agenda —NO números—. Devuelve los amigos que también lo tienen agendado (match mutuo, consentimiento mutuo). El servidor no ve ni almacena números de contactos. Rate-limited.",
|
|
15990
|
-
"operationId": "
|
|
16562
|
+
"operationId": "post /v1/me/friends/sync",
|
|
15991
16563
|
"parameters": [],
|
|
15992
16564
|
"requestBody": {
|
|
15993
16565
|
"content": {
|
|
@@ -16021,7 +16593,7 @@
|
|
|
16021
16593
|
"/v1/me/friends/{id}": {
|
|
16022
16594
|
"delete": {
|
|
16023
16595
|
"callbacks": {},
|
|
16024
|
-
"operationId": "
|
|
16596
|
+
"operationId": "delete /v1/me/friends/{id}",
|
|
16025
16597
|
"parameters": [
|
|
16026
16598
|
{
|
|
16027
16599
|
"description": "",
|
|
@@ -16050,7 +16622,7 @@
|
|
|
16050
16622
|
"get": {
|
|
16051
16623
|
"callbacks": {},
|
|
16052
16624
|
"description": "Lista las invitaciones de organización vigentes (pendientes, no caducadas) que otras personas me enviaron por mi username. Las acepto o rechazo desde la app.",
|
|
16053
|
-
"operationId": "
|
|
16625
|
+
"operationId": "get /v1/me/invitations",
|
|
16054
16626
|
"parameters": [],
|
|
16055
16627
|
"responses": {
|
|
16056
16628
|
"200": {
|
|
@@ -16074,7 +16646,7 @@
|
|
|
16074
16646
|
"post": {
|
|
16075
16647
|
"callbacks": {},
|
|
16076
16648
|
"description": "Me une a la organización que me invitó (crea la membresía y asigna el rol ofrecido).",
|
|
16077
|
-
"operationId": "
|
|
16649
|
+
"operationId": "post /v1/me/invitations/{id}/accept",
|
|
16078
16650
|
"parameters": [
|
|
16079
16651
|
{
|
|
16080
16652
|
"description": "",
|
|
@@ -16130,7 +16702,7 @@
|
|
|
16130
16702
|
"post": {
|
|
16131
16703
|
"callbacks": {},
|
|
16132
16704
|
"description": "Descarta la invitación sin unirme (no crea membresía). Doctrina anti-spam.",
|
|
16133
|
-
"operationId": "
|
|
16705
|
+
"operationId": "post /v1/me/invitations/{id}/decline",
|
|
16134
16706
|
"parameters": [
|
|
16135
16707
|
{
|
|
16136
16708
|
"description": "",
|
|
@@ -16169,7 +16741,7 @@
|
|
|
16169
16741
|
"get": {
|
|
16170
16742
|
"callbacks": {},
|
|
16171
16743
|
"description": "Descubrimiento personal. Manda **o** `username` (handle público, estilo Discord; identifier principal independiente del método de login) **o** `phone` (E.164; raíz de identidad de consumo, ADR-022). Devuelve la persona a la que puedes enviar una solicitud, o `data: null` si no corresponde a nadie alcanzable (no existe, inactivo o bloqueo). La indistinción es deliberada (no filtra existencia de cuentas). Rate-limited contra enumeración.",
|
|
16172
|
-
"operationId": "
|
|
16744
|
+
"operationId": "get /v1/me/people/lookup",
|
|
16173
16745
|
"parameters": [
|
|
16174
16746
|
{
|
|
16175
16747
|
"description": "Handle público a resolver (case-insensitive).",
|
|
@@ -16216,7 +16788,7 @@
|
|
|
16216
16788
|
"get": {
|
|
16217
16789
|
"callbacks": {},
|
|
16218
16790
|
"description": "Búsqueda estilo red social. Manda `q`. Si `q` es un `@username` (o coincide exacto con un handle), resuelve esa persona globalmente (clave exacta, alcanza a cualquiera). Además busca por **nombre** —substring, case-insensitive— pero **solo entre gente con la que ya compartes contexto** (contactos, orgs, chats): el nombre no enumera desconocidos, por privacidad (ADR-022/024). Devuelve una lista (posiblemente vacía). Rate-limited.",
|
|
16219
|
-
"operationId": "
|
|
16791
|
+
"operationId": "get /v1/me/people/search",
|
|
16220
16792
|
"parameters": [
|
|
16221
16793
|
{
|
|
16222
16794
|
"description": "Texto a buscar: un `@username` (exacto) y/o un nombre (substring en contexto).",
|
|
@@ -16267,7 +16839,7 @@
|
|
|
16267
16839
|
"/v1/me/reports/users/{user_id}": {
|
|
16268
16840
|
"post": {
|
|
16269
16841
|
"callbacks": {},
|
|
16270
|
-
"operationId": "
|
|
16842
|
+
"operationId": "post /v1/me/reports/users/{user_id}",
|
|
16271
16843
|
"parameters": [
|
|
16272
16844
|
{
|
|
16273
16845
|
"description": "",
|
|
@@ -16317,7 +16889,7 @@
|
|
|
16317
16889
|
"post": {
|
|
16318
16890
|
"callbacks": {},
|
|
16319
16891
|
"description": "Como el presign de organización, pero el blob se namespacea por usuario. Devuelve un sobre auto-descriptivo (`method`/`url`/`fields`/`headers`); el cliente sube según `method` y referencia `fileUrl` en los adjuntos del mensaje.",
|
|
16320
|
-
"operationId": "
|
|
16892
|
+
"operationId": "post /v1/me/uploads/presign",
|
|
16321
16893
|
"parameters": [],
|
|
16322
16894
|
"requestBody": {
|
|
16323
16895
|
"content": {
|
|
@@ -16331,17 +16903,205 @@
|
|
|
16331
16903
|
"required": false
|
|
16332
16904
|
},
|
|
16333
16905
|
"responses": {
|
|
16334
|
-
"200": {
|
|
16906
|
+
"200": {
|
|
16907
|
+
"content": {
|
|
16908
|
+
"application/json": {
|
|
16909
|
+
"schema": {
|
|
16910
|
+
"$ref": "#/components/schemas/PresignResponse"
|
|
16911
|
+
}
|
|
16912
|
+
}
|
|
16913
|
+
},
|
|
16914
|
+
"description": "Sobre de subida prefirmado"
|
|
16915
|
+
},
|
|
16916
|
+
"415": {
|
|
16917
|
+
"content": {
|
|
16918
|
+
"application/json": {
|
|
16919
|
+
"schema": {
|
|
16920
|
+
"$ref": "#/components/schemas/Error"
|
|
16921
|
+
}
|
|
16922
|
+
}
|
|
16923
|
+
},
|
|
16924
|
+
"description": "Tipo de archivo no soportado"
|
|
16925
|
+
}
|
|
16926
|
+
},
|
|
16927
|
+
"summary": "Pedir un sobre de subida prefirmado (adjunto personal)",
|
|
16928
|
+
"tags": [
|
|
16929
|
+
"personal uploads"
|
|
16930
|
+
]
|
|
16931
|
+
}
|
|
16932
|
+
},
|
|
16933
|
+
"/v1/me/usernames/available": {
|
|
16934
|
+
"get": {
|
|
16935
|
+
"callbacks": {},
|
|
16936
|
+
"operationId": "get /v1/me/usernames/available",
|
|
16937
|
+
"parameters": [
|
|
16938
|
+
{
|
|
16939
|
+
"description": "Handle a comprobar.",
|
|
16940
|
+
"in": "query",
|
|
16941
|
+
"name": "username",
|
|
16942
|
+
"required": true,
|
|
16943
|
+
"schema": {
|
|
16944
|
+
"type": "string",
|
|
16945
|
+
"x-struct": null,
|
|
16946
|
+
"x-validate": null
|
|
16947
|
+
}
|
|
16948
|
+
}
|
|
16949
|
+
],
|
|
16950
|
+
"responses": {
|
|
16951
|
+
"200": {
|
|
16952
|
+
"content": {
|
|
16953
|
+
"application/json": {
|
|
16954
|
+
"schema": {
|
|
16955
|
+
"$ref": "#/components/schemas/UsernameAvailableResponse"
|
|
16956
|
+
}
|
|
16957
|
+
}
|
|
16958
|
+
},
|
|
16959
|
+
"description": "Disponibilidad"
|
|
16960
|
+
}
|
|
16961
|
+
},
|
|
16962
|
+
"summary": "¿Está disponible este username? (check en vivo del alta/cambio)",
|
|
16963
|
+
"tags": [
|
|
16964
|
+
"people"
|
|
16965
|
+
]
|
|
16966
|
+
}
|
|
16967
|
+
},
|
|
16968
|
+
"/v1/members/me": {
|
|
16969
|
+
"get": {
|
|
16970
|
+
"callbacks": {},
|
|
16971
|
+
"description": "Devuelve el miembro de la member session actual: id, email, nombre visible y sus roles. El equivalente a `getCurrentUser` de una app interna.",
|
|
16972
|
+
"operationId": "get /v1/members/me",
|
|
16973
|
+
"parameters": [],
|
|
16974
|
+
"responses": {
|
|
16975
|
+
"200": {
|
|
16976
|
+
"content": {
|
|
16977
|
+
"application/json": {
|
|
16978
|
+
"schema": {
|
|
16979
|
+
"$ref": "#/components/schemas/MemberResponse"
|
|
16980
|
+
}
|
|
16981
|
+
}
|
|
16982
|
+
},
|
|
16983
|
+
"description": "El miembro actual"
|
|
16984
|
+
},
|
|
16985
|
+
"401": {
|
|
16986
|
+
"content": {
|
|
16987
|
+
"application/json": {
|
|
16988
|
+
"schema": {
|
|
16989
|
+
"$ref": "#/components/schemas/Error"
|
|
16990
|
+
}
|
|
16991
|
+
}
|
|
16992
|
+
},
|
|
16993
|
+
"description": "Sesión inválida"
|
|
16994
|
+
}
|
|
16995
|
+
},
|
|
16996
|
+
"security": [
|
|
16997
|
+
{
|
|
16998
|
+
"memberToken": []
|
|
16999
|
+
}
|
|
17000
|
+
],
|
|
17001
|
+
"summary": "El miembro autenticado (quién soy)",
|
|
17002
|
+
"tags": [
|
|
17003
|
+
"members"
|
|
17004
|
+
]
|
|
17005
|
+
}
|
|
17006
|
+
},
|
|
17007
|
+
"/v1/members/session": {
|
|
17008
|
+
"delete": {
|
|
17009
|
+
"callbacks": {},
|
|
17010
|
+
"description": "Revoca el member session token. Idempotente.",
|
|
17011
|
+
"operationId": "delete /v1/members/session",
|
|
17012
|
+
"parameters": [],
|
|
17013
|
+
"responses": {
|
|
17014
|
+
"204": {
|
|
17015
|
+
"description": "Sesión cerrada"
|
|
17016
|
+
}
|
|
17017
|
+
},
|
|
17018
|
+
"security": [
|
|
17019
|
+
{
|
|
17020
|
+
"memberToken": []
|
|
17021
|
+
}
|
|
17022
|
+
],
|
|
17023
|
+
"summary": "Cerrar la sesión de miembro (logout)",
|
|
17024
|
+
"tags": [
|
|
17025
|
+
"members"
|
|
17026
|
+
]
|
|
17027
|
+
},
|
|
17028
|
+
"post": {
|
|
17029
|
+
"callbacks": {},
|
|
17030
|
+
"description": "Autentica a un miembro humano (empleado que opera la org) por email+password y devuelve un member session token (`mem_…`) que porta su rol. La organización sale de la API key de la app. Es el login de operador de una app interna (patrón Organizations+Members).",
|
|
17031
|
+
"operationId": "post /v1/members/session",
|
|
17032
|
+
"parameters": [],
|
|
17033
|
+
"requestBody": {
|
|
17034
|
+
"content": {
|
|
17035
|
+
"application/json": {
|
|
17036
|
+
"schema": {
|
|
17037
|
+
"$ref": "#/components/schemas/MemberLoginRequest"
|
|
17038
|
+
}
|
|
17039
|
+
}
|
|
17040
|
+
},
|
|
17041
|
+
"description": "Credenciales del miembro",
|
|
17042
|
+
"required": false
|
|
17043
|
+
},
|
|
17044
|
+
"responses": {
|
|
17045
|
+
"201": {
|
|
17046
|
+
"content": {
|
|
17047
|
+
"application/json": {
|
|
17048
|
+
"schema": {
|
|
17049
|
+
"$ref": "#/components/schemas/MemberSessionResponse"
|
|
17050
|
+
}
|
|
17051
|
+
}
|
|
17052
|
+
},
|
|
17053
|
+
"description": "Sesión de miembro"
|
|
17054
|
+
},
|
|
17055
|
+
"401": {
|
|
17056
|
+
"content": {
|
|
17057
|
+
"application/json": {
|
|
17058
|
+
"schema": {
|
|
17059
|
+
"$ref": "#/components/schemas/Error"
|
|
17060
|
+
}
|
|
17061
|
+
}
|
|
17062
|
+
},
|
|
17063
|
+
"description": "API key o credenciales inválidas"
|
|
17064
|
+
},
|
|
17065
|
+
"422": {
|
|
17066
|
+
"content": {
|
|
17067
|
+
"application/json": {
|
|
17068
|
+
"schema": {
|
|
17069
|
+
"$ref": "#/components/schemas/Error"
|
|
17070
|
+
}
|
|
17071
|
+
}
|
|
17072
|
+
},
|
|
17073
|
+
"description": "Datos inválidos"
|
|
17074
|
+
}
|
|
17075
|
+
},
|
|
17076
|
+
"security": [
|
|
17077
|
+
{
|
|
17078
|
+
"apiKey": []
|
|
17079
|
+
}
|
|
17080
|
+
],
|
|
17081
|
+
"summary": "Iniciar sesión de un miembro de la organización (login)",
|
|
17082
|
+
"tags": [
|
|
17083
|
+
"members"
|
|
17084
|
+
]
|
|
17085
|
+
}
|
|
17086
|
+
},
|
|
17087
|
+
"/v1/members/session/refresh": {
|
|
17088
|
+
"post": {
|
|
17089
|
+
"callbacks": {},
|
|
17090
|
+
"description": "Rota el member session token: revoca el actual y emite uno nuevo para la misma membresía (patrón WorkOS refresh). Autenticado por el `mem_` actual.",
|
|
17091
|
+
"operationId": "post /v1/members/session/refresh",
|
|
17092
|
+
"parameters": [],
|
|
17093
|
+
"responses": {
|
|
17094
|
+
"201": {
|
|
16335
17095
|
"content": {
|
|
16336
17096
|
"application/json": {
|
|
16337
17097
|
"schema": {
|
|
16338
|
-
"$ref": "#/components/schemas/
|
|
17098
|
+
"$ref": "#/components/schemas/MemberSessionResponse"
|
|
16339
17099
|
}
|
|
16340
17100
|
}
|
|
16341
17101
|
},
|
|
16342
|
-
"description": "
|
|
17102
|
+
"description": "Nueva sesión"
|
|
16343
17103
|
},
|
|
16344
|
-
"
|
|
17104
|
+
"401": {
|
|
16345
17105
|
"content": {
|
|
16346
17106
|
"application/json": {
|
|
16347
17107
|
"schema": {
|
|
@@ -16349,47 +17109,17 @@
|
|
|
16349
17109
|
}
|
|
16350
17110
|
}
|
|
16351
17111
|
},
|
|
16352
|
-
"description": "
|
|
17112
|
+
"description": "Sesión inválida"
|
|
16353
17113
|
}
|
|
16354
17114
|
},
|
|
16355
|
-
"
|
|
16356
|
-
"tags": [
|
|
16357
|
-
"personal uploads"
|
|
16358
|
-
]
|
|
16359
|
-
}
|
|
16360
|
-
},
|
|
16361
|
-
"/v1/me/usernames/available": {
|
|
16362
|
-
"get": {
|
|
16363
|
-
"callbacks": {},
|
|
16364
|
-
"operationId": "HablalaApiWeb.Me.PeopleController.available",
|
|
16365
|
-
"parameters": [
|
|
17115
|
+
"security": [
|
|
16366
17116
|
{
|
|
16367
|
-
"
|
|
16368
|
-
"in": "query",
|
|
16369
|
-
"name": "username",
|
|
16370
|
-
"required": true,
|
|
16371
|
-
"schema": {
|
|
16372
|
-
"type": "string",
|
|
16373
|
-
"x-struct": null,
|
|
16374
|
-
"x-validate": null
|
|
16375
|
-
}
|
|
17117
|
+
"memberToken": []
|
|
16376
17118
|
}
|
|
16377
17119
|
],
|
|
16378
|
-
"
|
|
16379
|
-
"200": {
|
|
16380
|
-
"content": {
|
|
16381
|
-
"application/json": {
|
|
16382
|
-
"schema": {
|
|
16383
|
-
"$ref": "#/components/schemas/UsernameAvailableResponse"
|
|
16384
|
-
}
|
|
16385
|
-
}
|
|
16386
|
-
},
|
|
16387
|
-
"description": "Disponibilidad"
|
|
16388
|
-
}
|
|
16389
|
-
},
|
|
16390
|
-
"summary": "¿Está disponible este username? (check en vivo del alta/cambio)",
|
|
17120
|
+
"summary": "Renovar la sesión de miembro",
|
|
16391
17121
|
"tags": [
|
|
16392
|
-
"
|
|
17122
|
+
"members"
|
|
16393
17123
|
]
|
|
16394
17124
|
}
|
|
16395
17125
|
},
|
|
@@ -16397,7 +17127,7 @@
|
|
|
16397
17127
|
"post": {
|
|
16398
17128
|
"callbacks": {},
|
|
16399
17129
|
"description": "Crea un device authorization grant y devuelve `device_code` + `user_code` + `verification_uri`. El CLI muestra el código, abre la URI y sondea el token endpoint.",
|
|
16400
|
-
"operationId": "
|
|
17130
|
+
"operationId": "post /v1/oauth/device/code",
|
|
16401
17131
|
"parameters": [],
|
|
16402
17132
|
"requestBody": {
|
|
16403
17133
|
"content": {
|
|
@@ -16442,7 +17172,7 @@
|
|
|
16442
17172
|
"get": {
|
|
16443
17173
|
"callbacks": {},
|
|
16444
17174
|
"description": "Devuelve el login del CLI pendiente detrás de un `user_code` para que la web pinte el consent (cliente, dispositivo, expiración). 404 si no existe, 410 si venció, 409 si ya se procesó.",
|
|
16445
|
-
"operationId": "
|
|
17175
|
+
"operationId": "get /v1/oauth/grants/{user_code}",
|
|
16446
17176
|
"parameters": [
|
|
16447
17177
|
{
|
|
16448
17178
|
"description": "",
|
|
@@ -16508,7 +17238,7 @@
|
|
|
16508
17238
|
"post": {
|
|
16509
17239
|
"callbacks": {},
|
|
16510
17240
|
"description": "El CLI que sondea recibe `access_denied` y termina.",
|
|
16511
|
-
"operationId": "
|
|
17241
|
+
"operationId": "post /v1/oauth/grants/{user_code}/deny",
|
|
16512
17242
|
"parameters": [
|
|
16513
17243
|
{
|
|
16514
17244
|
"description": "",
|
|
@@ -16554,7 +17284,7 @@
|
|
|
16554
17284
|
"post": {
|
|
16555
17285
|
"callbacks": {},
|
|
16556
17286
|
"description": "`grant_type=authorization_code` (loopback + PKCE) o `grant_type=urn:ietf:params:oauth:grant-type:device_code` (polling del device flow). El `access_token` devuelto es un `mat_…` normal; guárdalo, no se puede recuperar.",
|
|
16557
|
-
"operationId": "
|
|
17287
|
+
"operationId": "post /v1/oauth/token",
|
|
16558
17288
|
"parameters": [],
|
|
16559
17289
|
"requestBody": {
|
|
16560
17290
|
"content": {
|
|
@@ -16608,7 +17338,7 @@
|
|
|
16608
17338
|
"/v1/objects": {
|
|
16609
17339
|
"get": {
|
|
16610
17340
|
"callbacks": {},
|
|
16611
|
-
"operationId": "
|
|
17341
|
+
"operationId": "get /v1/objects",
|
|
16612
17342
|
"parameters": [],
|
|
16613
17343
|
"responses": {
|
|
16614
17344
|
"200": {
|
|
@@ -16629,7 +17359,7 @@
|
|
|
16629
17359
|
},
|
|
16630
17360
|
"post": {
|
|
16631
17361
|
"callbacks": {},
|
|
16632
|
-
"operationId": "
|
|
17362
|
+
"operationId": "post /v1/objects",
|
|
16633
17363
|
"parameters": [],
|
|
16634
17364
|
"requestBody": {
|
|
16635
17365
|
"content": {
|
|
@@ -16674,7 +17404,7 @@
|
|
|
16674
17404
|
"delete": {
|
|
16675
17405
|
"callbacks": {},
|
|
16676
17406
|
"description": "Soft delete: marca `isArchived` en vez de borrar (los records persisten).",
|
|
16677
|
-
"operationId": "
|
|
17407
|
+
"operationId": "delete /v1/objects/{id}",
|
|
16678
17408
|
"parameters": [
|
|
16679
17409
|
{
|
|
16680
17410
|
"description": "",
|
|
@@ -16700,7 +17430,7 @@
|
|
|
16700
17430
|
},
|
|
16701
17431
|
"get": {
|
|
16702
17432
|
"callbacks": {},
|
|
16703
|
-
"operationId": "
|
|
17433
|
+
"operationId": "get /v1/objects/{id}",
|
|
16704
17434
|
"parameters": [
|
|
16705
17435
|
{
|
|
16706
17436
|
"description": "",
|
|
@@ -16743,7 +17473,7 @@
|
|
|
16743
17473
|
},
|
|
16744
17474
|
"patch": {
|
|
16745
17475
|
"callbacks": {},
|
|
16746
|
-
"operationId": "
|
|
17476
|
+
"operationId": "patch /v1/objects/{id}",
|
|
16747
17477
|
"parameters": [
|
|
16748
17478
|
{
|
|
16749
17479
|
"description": "",
|
|
@@ -16797,7 +17527,7 @@
|
|
|
16797
17527
|
},
|
|
16798
17528
|
"put": {
|
|
16799
17529
|
"callbacks": {},
|
|
16800
|
-
"operationId": "
|
|
17530
|
+
"operationId": "put /v1/objects/{id}",
|
|
16801
17531
|
"parameters": [
|
|
16802
17532
|
{
|
|
16803
17533
|
"description": "",
|
|
@@ -16853,7 +17583,7 @@
|
|
|
16853
17583
|
"/v1/objects/{object_id}/attributes": {
|
|
16854
17584
|
"get": {
|
|
16855
17585
|
"callbacks": {},
|
|
16856
|
-
"operationId": "
|
|
17586
|
+
"operationId": "get /v1/objects/{object_id}/attributes",
|
|
16857
17587
|
"parameters": [
|
|
16858
17588
|
{
|
|
16859
17589
|
"description": "",
|
|
@@ -16886,7 +17616,7 @@
|
|
|
16886
17616
|
},
|
|
16887
17617
|
"post": {
|
|
16888
17618
|
"callbacks": {},
|
|
16889
|
-
"operationId": "
|
|
17619
|
+
"operationId": "post /v1/objects/{object_id}/attributes",
|
|
16890
17620
|
"parameters": [
|
|
16891
17621
|
{
|
|
16892
17622
|
"description": "",
|
|
@@ -16942,7 +17672,7 @@
|
|
|
16942
17672
|
"/v1/objects/{object_id}/attributes/{id}": {
|
|
16943
17673
|
"patch": {
|
|
16944
17674
|
"callbacks": {},
|
|
16945
|
-
"operationId": "
|
|
17675
|
+
"operationId": "patch /v1/objects/{object_id}/attributes/{id}",
|
|
16946
17676
|
"parameters": [
|
|
16947
17677
|
{
|
|
16948
17678
|
"description": "",
|
|
@@ -17007,7 +17737,7 @@
|
|
|
17007
17737
|
},
|
|
17008
17738
|
"put": {
|
|
17009
17739
|
"callbacks": {},
|
|
17010
|
-
"operationId": "
|
|
17740
|
+
"operationId": "put /v1/objects/{object_id}/attributes/{id}",
|
|
17011
17741
|
"parameters": [
|
|
17012
17742
|
{
|
|
17013
17743
|
"description": "",
|
|
@@ -17074,7 +17804,7 @@
|
|
|
17074
17804
|
"/v1/objects/{object_slug}/records": {
|
|
17075
17805
|
"post": {
|
|
17076
17806
|
"callbacks": {},
|
|
17077
|
-
"operationId": "
|
|
17807
|
+
"operationId": "post /v1/objects/{object_slug}/records",
|
|
17078
17808
|
"parameters": [
|
|
17079
17809
|
{
|
|
17080
17810
|
"description": "",
|
|
@@ -17141,7 +17871,7 @@
|
|
|
17141
17871
|
"get": {
|
|
17142
17872
|
"callbacks": {},
|
|
17143
17873
|
"description": "Lista los records SOFT-DELETED del objeto (`deleted_at IS NOT NULL`), para restaurarlos. Misma lectura gobernada que `POST /query` (RBAC + ABAC por fila + field_mask + paginación keyset), sobre el otro lado de `deleted_at`. Gate RBAC: `records:delete`.",
|
|
17144
|
-
"operationId": "
|
|
17874
|
+
"operationId": "get /v1/objects/{object_slug}/records/trash",
|
|
17145
17875
|
"parameters": [
|
|
17146
17876
|
{
|
|
17147
17877
|
"description": "",
|
|
@@ -17218,7 +17948,7 @@
|
|
|
17218
17948
|
"/v1/objects/{object_slug}/records/{id}": {
|
|
17219
17949
|
"delete": {
|
|
17220
17950
|
"callbacks": {},
|
|
17221
|
-
"operationId": "
|
|
17951
|
+
"operationId": "delete /v1/objects/{object_slug}/records/{id}",
|
|
17222
17952
|
"parameters": [
|
|
17223
17953
|
{
|
|
17224
17954
|
"description": "",
|
|
@@ -17275,7 +18005,7 @@
|
|
|
17275
18005
|
},
|
|
17276
18006
|
"get": {
|
|
17277
18007
|
"callbacks": {},
|
|
17278
|
-
"operationId": "
|
|
18008
|
+
"operationId": "get /v1/objects/{object_slug}/records/{id}",
|
|
17279
18009
|
"parameters": [
|
|
17280
18010
|
{
|
|
17281
18011
|
"description": "",
|
|
@@ -17339,7 +18069,7 @@
|
|
|
17339
18069
|
},
|
|
17340
18070
|
"patch": {
|
|
17341
18071
|
"callbacks": {},
|
|
17342
|
-
"operationId": "
|
|
18072
|
+
"operationId": "patch /v1/objects/{object_slug}/records/{id}",
|
|
17343
18073
|
"parameters": [
|
|
17344
18074
|
{
|
|
17345
18075
|
"description": "",
|
|
@@ -17424,7 +18154,7 @@
|
|
|
17424
18154
|
},
|
|
17425
18155
|
"put": {
|
|
17426
18156
|
"callbacks": {},
|
|
17427
|
-
"operationId": "
|
|
18157
|
+
"operationId": "put /v1/objects/{object_slug}/records/{id}",
|
|
17428
18158
|
"parameters": [
|
|
17429
18159
|
{
|
|
17430
18160
|
"description": "",
|
|
@@ -17512,7 +18242,7 @@
|
|
|
17512
18242
|
"get": {
|
|
17513
18243
|
"callbacks": {},
|
|
17514
18244
|
"description": "Devuelve cuántos edges se desvincularían y qué referencias core BLOQUEARÍAN el borrado (restrict-on-delete), sin mutar nada. Alimenta la confirmación dependent-aware de la UI. Misma fuente que el guard del borrado real, así que preview y borrado no divergen. Gate `records:delete` + ABAC de escritura por fila.",
|
|
17515
|
-
"operationId": "
|
|
18245
|
+
"operationId": "get /v1/objects/{object_slug}/records/{record_id}/dependencies",
|
|
17516
18246
|
"parameters": [
|
|
17517
18247
|
{
|
|
17518
18248
|
"description": "",
|
|
@@ -17578,7 +18308,7 @@
|
|
|
17578
18308
|
"/v1/objects/{object_slug}/records/{record_id}/events": {
|
|
17579
18309
|
"get": {
|
|
17580
18310
|
"callbacks": {},
|
|
17581
|
-
"operationId": "
|
|
18311
|
+
"operationId": "get /v1/objects/{object_slug}/records/{record_id}/events",
|
|
17582
18312
|
"parameters": [
|
|
17583
18313
|
{
|
|
17584
18314
|
"description": "",
|
|
@@ -17624,7 +18354,7 @@
|
|
|
17624
18354
|
"/v1/objects/{object_slug}/records/{record_id}/restore": {
|
|
17625
18355
|
"post": {
|
|
17626
18356
|
"callbacks": {},
|
|
17627
|
-
"operationId": "
|
|
18357
|
+
"operationId": "post /v1/objects/{object_slug}/records/{record_id}/restore",
|
|
17628
18358
|
"parameters": [
|
|
17629
18359
|
{
|
|
17630
18360
|
"description": "",
|
|
@@ -17701,7 +18431,7 @@
|
|
|
17701
18431
|
"post": {
|
|
17702
18432
|
"callbacks": {},
|
|
17703
18433
|
"description": "Fase 1 del flujo de archivos de un record: valida el archivo declarado contra el config del attribute `file` (`accepted_content_types` con comodines `image/*`, `max_size_bytes`) y devuelve el destino de subida prefirmado. Luego: (2) `PUT` del blob crudo a `uploadUrl` con `headers`; (3) confirmar escribiendo el record con `fileUrl` en el envelope del attribute (`{\"url\": fileUrl, …}`) — el servidor verifica el blob contra el storage (tamaño/tipo REALES) y lo promueve a su ubicación definitiva. Un blob nunca confirmado expira solo. Gate `records:create`.",
|
|
17704
|
-
"operationId": "
|
|
18434
|
+
"operationId": "post /v1/objects/{object_slug}/uploads",
|
|
17705
18435
|
"parameters": [
|
|
17706
18436
|
{
|
|
17707
18437
|
"description": "",
|
|
@@ -17768,7 +18498,7 @@
|
|
|
17768
18498
|
"get": {
|
|
17769
18499
|
"callbacks": {},
|
|
17770
18500
|
"description": "La organización a la que pertenece la credencial de máquina, con su `status` (`active`/`unclaimed`/`claimed`) y sus relojes. Es el endpoint de polling del agente que provisionó una claimable org: mientras responda `unclaimed`, nadie la reclamó; un `401` posterior significa que se reclamó (los tokens del agente se rotaron) o venció.",
|
|
17771
|
-
"operationId": "
|
|
18501
|
+
"operationId": "get /v1/organization",
|
|
17772
18502
|
"parameters": [],
|
|
17773
18503
|
"responses": {
|
|
17774
18504
|
"200": {
|
|
@@ -17802,7 +18532,7 @@
|
|
|
17802
18532
|
"post": {
|
|
17803
18533
|
"callbacks": {},
|
|
17804
18534
|
"description": "Emite un claim link nuevo (el anterior deja de canjear al instante) con su TTL corto, SIN extender el TTL del recurso. Falla si la org ya fue reclamada (`409`) o si el recurso venció (`410`).",
|
|
17805
|
-
"operationId": "
|
|
18535
|
+
"operationId": "post /v1/organization/refresh-claim-url",
|
|
17806
18536
|
"parameters": [],
|
|
17807
18537
|
"responses": {
|
|
17808
18538
|
"200": {
|
|
@@ -17845,7 +18575,7 @@
|
|
|
17845
18575
|
"/v1/organizations": {
|
|
17846
18576
|
"get": {
|
|
17847
18577
|
"callbacks": {},
|
|
17848
|
-
"operationId": "
|
|
18578
|
+
"operationId": "get /v1/organizations",
|
|
17849
18579
|
"parameters": [],
|
|
17850
18580
|
"responses": {
|
|
17851
18581
|
"200": {
|
|
@@ -17866,7 +18596,7 @@
|
|
|
17866
18596
|
},
|
|
17867
18597
|
"post": {
|
|
17868
18598
|
"callbacks": {},
|
|
17869
|
-
"operationId": "
|
|
18599
|
+
"operationId": "post /v1/organizations",
|
|
17870
18600
|
"parameters": [],
|
|
17871
18601
|
"requestBody": {
|
|
17872
18602
|
"content": {
|
|
@@ -17911,7 +18641,7 @@
|
|
|
17911
18641
|
"post": {
|
|
17912
18642
|
"callbacks": {},
|
|
17913
18643
|
"description": "Consuma la **transferencia**: el usuario autenticado se vuelve `owner` de la org del claim token, la org pasa a `claimed` y los secretos del agente se ROTAN (todos los `mat_` y API keys activos se revocan; se emite un par nuevo que se revela aquí una única vez). Registra el evento `organization.claimed`.",
|
|
17914
|
-
"operationId": "
|
|
18644
|
+
"operationId": "post /v1/organizations/claim",
|
|
17915
18645
|
"parameters": [],
|
|
17916
18646
|
"requestBody": {
|
|
17917
18647
|
"content": {
|
|
@@ -17966,7 +18696,7 @@
|
|
|
17966
18696
|
"post": {
|
|
17967
18697
|
"callbacks": {},
|
|
17968
18698
|
"description": "El **signup invertido** para agentes: crea una organización real `unclaimed` (sin dueño) y devuelve — UNA sola vez — el par de API keys (`pk_`/`sk_`), el machine access token (`mat_`, preset `account_as_code`) y el `claimUrl` con el que un humano la reclama. La org caduca (`expiresAt`, 72 h) si nadie la reclama; el claim link tiene su propio TTL renovable. Al reclamarse, los secretos del agente se ROTAN. Sin autenticación; rate limit estricto por IP.",
|
|
17969
|
-
"operationId": "
|
|
18699
|
+
"operationId": "post /v1/organizations/claimable",
|
|
17970
18700
|
"parameters": [],
|
|
17971
18701
|
"requestBody": {
|
|
17972
18702
|
"content": {
|
|
@@ -18021,7 +18751,7 @@
|
|
|
18021
18751
|
"get": {
|
|
18022
18752
|
"callbacks": {},
|
|
18023
18753
|
"description": "A qué organización lleva un claim token, sin consumirlo ni requerir sesión (la pantalla de claim lo muestra antes de pedir login). Siempre `200`: `status` distingue un token válido de uno inválido/vencido/ya reclamado (sin filtrar el motivo).",
|
|
18024
|
-
"operationId": "
|
|
18754
|
+
"operationId": "get /v1/organizations/claimable/preview",
|
|
18025
18755
|
"parameters": [
|
|
18026
18756
|
{
|
|
18027
18757
|
"description": "",
|
|
@@ -18056,7 +18786,7 @@
|
|
|
18056
18786
|
"/v1/organizations/{id}": {
|
|
18057
18787
|
"delete": {
|
|
18058
18788
|
"callbacks": {},
|
|
18059
|
-
"operationId": "
|
|
18789
|
+
"operationId": "delete /v1/organizations/{id}",
|
|
18060
18790
|
"parameters": [
|
|
18061
18791
|
{
|
|
18062
18792
|
"description": "",
|
|
@@ -18082,7 +18812,7 @@
|
|
|
18082
18812
|
},
|
|
18083
18813
|
"get": {
|
|
18084
18814
|
"callbacks": {},
|
|
18085
|
-
"operationId": "
|
|
18815
|
+
"operationId": "get /v1/organizations/{id}",
|
|
18086
18816
|
"parameters": [
|
|
18087
18817
|
{
|
|
18088
18818
|
"description": "",
|
|
@@ -18125,7 +18855,7 @@
|
|
|
18125
18855
|
},
|
|
18126
18856
|
"patch": {
|
|
18127
18857
|
"callbacks": {},
|
|
18128
|
-
"operationId": "
|
|
18858
|
+
"operationId": "patch /v1/organizations/{id}",
|
|
18129
18859
|
"parameters": [
|
|
18130
18860
|
{
|
|
18131
18861
|
"description": "",
|
|
@@ -18179,7 +18909,7 @@
|
|
|
18179
18909
|
},
|
|
18180
18910
|
"put": {
|
|
18181
18911
|
"callbacks": {},
|
|
18182
|
-
"operationId": "
|
|
18912
|
+
"operationId": "put /v1/organizations/{id}",
|
|
18183
18913
|
"parameters": [
|
|
18184
18914
|
{
|
|
18185
18915
|
"description": "",
|
|
@@ -18236,7 +18966,7 @@
|
|
|
18236
18966
|
"post": {
|
|
18237
18967
|
"callbacks": {},
|
|
18238
18968
|
"description": "El owner/admin envía los datos legales del negocio (razón social, tax id, email de contacto) y la organización pasa a estado `pending`. La aprueba/rechaza un admin de plataforma. Requiere el permiso `organizations:update`.",
|
|
18239
|
-
"operationId": "
|
|
18969
|
+
"operationId": "post /v1/organizations/{id}/verification",
|
|
18240
18970
|
"parameters": [
|
|
18241
18971
|
{
|
|
18242
18972
|
"description": "",
|
|
@@ -18303,7 +19033,7 @@
|
|
|
18303
19033
|
"post": {
|
|
18304
19034
|
"callbacks": {},
|
|
18305
19035
|
"description": "Marca el negocio como `verified`. Requiere el permiso de plataforma `organizations:verify` (un owner NO puede autoverificarse).",
|
|
18306
|
-
"operationId": "
|
|
19036
|
+
"operationId": "post /v1/organizations/{id}/verification/approve",
|
|
18307
19037
|
"parameters": [
|
|
18308
19038
|
{
|
|
18309
19039
|
"description": "",
|
|
@@ -18359,7 +19089,7 @@
|
|
|
18359
19089
|
"post": {
|
|
18360
19090
|
"callbacks": {},
|
|
18361
19091
|
"description": "Marca el negocio como `rejected` con un motivo legible. Requiere `organizations:verify`.",
|
|
18362
|
-
"operationId": "
|
|
19092
|
+
"operationId": "post /v1/organizations/{id}/verification/reject",
|
|
18363
19093
|
"parameters": [
|
|
18364
19094
|
{
|
|
18365
19095
|
"description": "",
|
|
@@ -18426,7 +19156,7 @@
|
|
|
18426
19156
|
"get": {
|
|
18427
19157
|
"callbacks": {},
|
|
18428
19158
|
"description": "Los access tokens de máquina de la organización (solo metadatos; el secreto no se recupera).",
|
|
18429
|
-
"operationId": "
|
|
19159
|
+
"operationId": "get /v1/organizations/{organization_id}/access-tokens",
|
|
18430
19160
|
"parameters": [
|
|
18431
19161
|
{
|
|
18432
19162
|
"description": "",
|
|
@@ -18460,7 +19190,7 @@
|
|
|
18460
19190
|
"post": {
|
|
18461
19191
|
"callbacks": {},
|
|
18462
19192
|
"description": "Emite una credencial de máquina (`mat_…`) con la que un agente (Claude Code) o un script CI escribe el modelo de datos por HTTP. La respuesta incluye el secreto en claro UNA sola vez (`token`); guárdalo, no se puede recuperar. Los permisos se intersectan con los del creador (un token nunca puede más que quien lo emite).",
|
|
18463
|
-
"operationId": "
|
|
19193
|
+
"operationId": "post /v1/organizations/{organization_id}/access-tokens",
|
|
18464
19194
|
"parameters": [
|
|
18465
19195
|
{
|
|
18466
19196
|
"description": "",
|
|
@@ -18527,7 +19257,7 @@
|
|
|
18527
19257
|
"get": {
|
|
18528
19258
|
"callbacks": {},
|
|
18529
19259
|
"description": "Los conjuntos de permisos nombrados que la UI ofrece al emitir un token (lenguaje humano, sin permisos RBAC crudos). El `key` de un preset se manda como `preset` en el create.",
|
|
18530
|
-
"operationId": "
|
|
19260
|
+
"operationId": "get /v1/organizations/{organization_id}/access-tokens/presets",
|
|
18531
19261
|
"parameters": [
|
|
18532
19262
|
{
|
|
18533
19263
|
"description": "",
|
|
@@ -18563,7 +19293,7 @@
|
|
|
18563
19293
|
"delete": {
|
|
18564
19294
|
"callbacks": {},
|
|
18565
19295
|
"description": "Revoca la credencial (irreversible). Las requests que la usen dejan de autenticar.",
|
|
18566
|
-
"operationId": "
|
|
19296
|
+
"operationId": "delete /v1/organizations/{organization_id}/access-tokens/{id}",
|
|
18567
19297
|
"parameters": [
|
|
18568
19298
|
{
|
|
18569
19299
|
"description": "",
|
|
@@ -18613,7 +19343,7 @@
|
|
|
18613
19343
|
"get": {
|
|
18614
19344
|
"callbacks": {},
|
|
18615
19345
|
"description": "Los agentes activos de la organización.",
|
|
18616
|
-
"operationId": "
|
|
19346
|
+
"operationId": "get /v1/organizations/{organization_id}/agents",
|
|
18617
19347
|
"parameters": [
|
|
18618
19348
|
{
|
|
18619
19349
|
"description": "",
|
|
@@ -18657,7 +19387,7 @@
|
|
|
18657
19387
|
"post": {
|
|
18658
19388
|
"callbacks": {},
|
|
18659
19389
|
"description": "Crea un agente por dato: su bot user (identidad de mensajería), su fila core y su proyección en el diccionario. El agent loop que lo corre es una definición de sistema.",
|
|
18660
|
-
"operationId": "
|
|
19390
|
+
"operationId": "post /v1/organizations/{organization_id}/agents",
|
|
18661
19391
|
"parameters": [
|
|
18662
19392
|
{
|
|
18663
19393
|
"description": "",
|
|
@@ -18724,7 +19454,7 @@
|
|
|
18724
19454
|
"delete": {
|
|
18725
19455
|
"callbacks": {},
|
|
18726
19456
|
"description": "Soft-delete + revocación: el agente deja de correr (fail-closed) y su bot user se desactiva.",
|
|
18727
|
-
"operationId": "
|
|
19457
|
+
"operationId": "delete /v1/organizations/{organization_id}/agents/{id}",
|
|
18728
19458
|
"parameters": [
|
|
18729
19459
|
{
|
|
18730
19460
|
"description": "",
|
|
@@ -18771,7 +19501,7 @@
|
|
|
18771
19501
|
},
|
|
18772
19502
|
"get": {
|
|
18773
19503
|
"callbacks": {},
|
|
18774
|
-
"operationId": "
|
|
19504
|
+
"operationId": "get /v1/organizations/{organization_id}/agents/{id}",
|
|
18775
19505
|
"parameters": [
|
|
18776
19506
|
{
|
|
18777
19507
|
"description": "",
|
|
@@ -18826,7 +19556,7 @@
|
|
|
18826
19556
|
"patch": {
|
|
18827
19557
|
"callbacks": {},
|
|
18828
19558
|
"description": "Edita prompt/tools/modelo/permisos/nombre. El handle y la identidad no cambian.",
|
|
18829
|
-
"operationId": "
|
|
19559
|
+
"operationId": "patch /v1/organizations/{organization_id}/agents/{id}",
|
|
18830
19560
|
"parameters": [
|
|
18831
19561
|
{
|
|
18832
19562
|
"description": "",
|
|
@@ -18892,7 +19622,7 @@
|
|
|
18892
19622
|
"put": {
|
|
18893
19623
|
"callbacks": {},
|
|
18894
19624
|
"description": "Edita prompt/tools/modelo/permisos/nombre. El handle y la identidad no cambian.",
|
|
18895
|
-
"operationId": "
|
|
19625
|
+
"operationId": "put /v1/organizations/{organization_id}/agents/{id}",
|
|
18896
19626
|
"parameters": [
|
|
18897
19627
|
{
|
|
18898
19628
|
"description": "",
|
|
@@ -18956,11 +19686,88 @@
|
|
|
18956
19686
|
]
|
|
18957
19687
|
}
|
|
18958
19688
|
},
|
|
19689
|
+
"/v1/organizations/{organization_id}/aggregate": {
|
|
19690
|
+
"post": {
|
|
19691
|
+
"callbacks": {},
|
|
19692
|
+
"description": "Agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), bajo la misma gobernanza (RBAC + ABAC default-deny) que la lectura puntual. Reemplaza los reportes que serían RPCs de SQL por-tenant.",
|
|
19693
|
+
"operationId": "post /v1/organizations/{organization_id}/aggregate",
|
|
19694
|
+
"parameters": [
|
|
19695
|
+
{
|
|
19696
|
+
"description": "",
|
|
19697
|
+
"in": "path",
|
|
19698
|
+
"name": "organization_id",
|
|
19699
|
+
"required": true,
|
|
19700
|
+
"schema": {
|
|
19701
|
+
"type": "string",
|
|
19702
|
+
"x-struct": null,
|
|
19703
|
+
"x-validate": null
|
|
19704
|
+
}
|
|
19705
|
+
}
|
|
19706
|
+
],
|
|
19707
|
+
"requestBody": {
|
|
19708
|
+
"content": {
|
|
19709
|
+
"application/json": {
|
|
19710
|
+
"schema": {
|
|
19711
|
+
"$ref": "#/components/schemas/AggregateQueryRequest"
|
|
19712
|
+
}
|
|
19713
|
+
}
|
|
19714
|
+
},
|
|
19715
|
+
"description": "Aggregation query",
|
|
19716
|
+
"required": false
|
|
19717
|
+
},
|
|
19718
|
+
"responses": {
|
|
19719
|
+
"200": {
|
|
19720
|
+
"content": {
|
|
19721
|
+
"application/json": {
|
|
19722
|
+
"schema": {
|
|
19723
|
+
"$ref": "#/components/schemas/AggregateResultResponse"
|
|
19724
|
+
}
|
|
19725
|
+
}
|
|
19726
|
+
},
|
|
19727
|
+
"description": "Grupos agregados"
|
|
19728
|
+
},
|
|
19729
|
+
"403": {
|
|
19730
|
+
"content": {
|
|
19731
|
+
"application/json": {
|
|
19732
|
+
"schema": {
|
|
19733
|
+
"$ref": "#/components/schemas/Error"
|
|
19734
|
+
}
|
|
19735
|
+
}
|
|
19736
|
+
},
|
|
19737
|
+
"description": "Sin permiso"
|
|
19738
|
+
},
|
|
19739
|
+
"404": {
|
|
19740
|
+
"content": {
|
|
19741
|
+
"application/json": {
|
|
19742
|
+
"schema": {
|
|
19743
|
+
"$ref": "#/components/schemas/Error"
|
|
19744
|
+
}
|
|
19745
|
+
}
|
|
19746
|
+
},
|
|
19747
|
+
"description": "Objeto desconocido"
|
|
19748
|
+
},
|
|
19749
|
+
"422": {
|
|
19750
|
+
"content": {
|
|
19751
|
+
"application/json": {
|
|
19752
|
+
"schema": {
|
|
19753
|
+
"$ref": "#/components/schemas/Error"
|
|
19754
|
+
}
|
|
19755
|
+
}
|
|
19756
|
+
},
|
|
19757
|
+
"description": "Consulta inválida"
|
|
19758
|
+
}
|
|
19759
|
+
},
|
|
19760
|
+
"summary": "Ejecutar una aggregation query",
|
|
19761
|
+
"tags": [
|
|
19762
|
+
"query"
|
|
19763
|
+
]
|
|
19764
|
+
}
|
|
19765
|
+
},
|
|
18959
19766
|
"/v1/organizations/{organization_id}/api-keys": {
|
|
18960
19767
|
"get": {
|
|
18961
19768
|
"callbacks": {},
|
|
18962
19769
|
"description": "Las API keys de la organización (solo metadatos; el secreto no se recupera).",
|
|
18963
|
-
"operationId": "
|
|
19770
|
+
"operationId": "get /v1/organizations/{organization_id}/api-keys",
|
|
18964
19771
|
"parameters": [
|
|
18965
19772
|
{
|
|
18966
19773
|
"description": "",
|
|
@@ -18994,7 +19801,7 @@
|
|
|
18994
19801
|
"post": {
|
|
18995
19802
|
"callbacks": {},
|
|
18996
19803
|
"description": "Emite el **par** de API keys del canal público en una operación: una **publishable** (`pk_`, client-side) y una **secret** (`sk_`, server-side). La respuesta incluye el secreto en claro de AMBAS una sola vez (`publishable.token`/`secret.token`); guárdalos, no se pueden recuperar. Es el flujo del panel: se muestran completos para copiar/pegar en el `.env` de la app cliente. `name` por defecto \"Default\".",
|
|
18997
|
-
"operationId": "
|
|
19804
|
+
"operationId": "post /v1/organizations/{organization_id}/api-keys",
|
|
18998
19805
|
"parameters": [
|
|
18999
19806
|
{
|
|
19000
19807
|
"description": "",
|
|
@@ -19061,7 +19868,7 @@
|
|
|
19061
19868
|
"delete": {
|
|
19062
19869
|
"callbacks": {},
|
|
19063
19870
|
"description": "Revoca la credencial (irreversible). Las requests que la usen dejan de autenticar.",
|
|
19064
|
-
"operationId": "
|
|
19871
|
+
"operationId": "delete /v1/organizations/{organization_id}/api-keys/{id}",
|
|
19065
19872
|
"parameters": [
|
|
19066
19873
|
{
|
|
19067
19874
|
"description": "",
|
|
@@ -19111,7 +19918,7 @@
|
|
|
19111
19918
|
"post": {
|
|
19112
19919
|
"callbacks": {},
|
|
19113
19920
|
"description": "Rota la key (modelo Stripe *roll*): emite un reemplazo del mismo tipo y nombre y revoca la original de inmediato. La respuesta incluye el nuevo secreto en claro UNA sola vez (`token`); guárdalo. Las requests que usaban la key vieja dejan de autenticar.",
|
|
19114
|
-
"operationId": "
|
|
19921
|
+
"operationId": "post /v1/organizations/{organization_id}/api-keys/{id}/rotate",
|
|
19115
19922
|
"parameters": [
|
|
19116
19923
|
{
|
|
19117
19924
|
"description": "",
|
|
@@ -19167,7 +19974,7 @@
|
|
|
19167
19974
|
"/v1/organizations/{organization_id}/appointments": {
|
|
19168
19975
|
"get": {
|
|
19169
19976
|
"callbacks": {},
|
|
19170
|
-
"operationId": "
|
|
19977
|
+
"operationId": "get /v1/organizations/{organization_id}/appointments",
|
|
19171
19978
|
"parameters": [
|
|
19172
19979
|
{
|
|
19173
19980
|
"description": "",
|
|
@@ -19233,7 +20040,7 @@
|
|
|
19233
20040
|
},
|
|
19234
20041
|
"post": {
|
|
19235
20042
|
"callbacks": {},
|
|
19236
|
-
"operationId": "
|
|
20043
|
+
"operationId": "post /v1/organizations/{organization_id}/appointments",
|
|
19237
20044
|
"parameters": [
|
|
19238
20045
|
{
|
|
19239
20046
|
"description": "",
|
|
@@ -19289,7 +20096,7 @@
|
|
|
19289
20096
|
"/v1/organizations/{organization_id}/appointments/{id}": {
|
|
19290
20097
|
"get": {
|
|
19291
20098
|
"callbacks": {},
|
|
19292
|
-
"operationId": "
|
|
20099
|
+
"operationId": "get /v1/organizations/{organization_id}/appointments/{id}",
|
|
19293
20100
|
"parameters": [
|
|
19294
20101
|
{
|
|
19295
20102
|
"description": "",
|
|
@@ -19345,7 +20152,7 @@
|
|
|
19345
20152
|
"/v1/organizations/{organization_id}/appointments/{id}/cancel": {
|
|
19346
20153
|
"post": {
|
|
19347
20154
|
"callbacks": {},
|
|
19348
|
-
"operationId": "
|
|
20155
|
+
"operationId": "post /v1/organizations/{organization_id}/appointments/{id}/cancel",
|
|
19349
20156
|
"parameters": [
|
|
19350
20157
|
{
|
|
19351
20158
|
"description": "",
|
|
@@ -19412,7 +20219,7 @@
|
|
|
19412
20219
|
"/v1/organizations/{organization_id}/appointments/{id}/confirm": {
|
|
19413
20220
|
"post": {
|
|
19414
20221
|
"callbacks": {},
|
|
19415
|
-
"operationId": "
|
|
20222
|
+
"operationId": "post /v1/organizations/{organization_id}/appointments/{id}/confirm",
|
|
19416
20223
|
"parameters": [
|
|
19417
20224
|
{
|
|
19418
20225
|
"description": "",
|
|
@@ -19469,7 +20276,7 @@
|
|
|
19469
20276
|
"post": {
|
|
19470
20277
|
"callbacks": {},
|
|
19471
20278
|
"description": "Flag ortogonal al estado; la cita no libera su hueco.",
|
|
19472
|
-
"operationId": "
|
|
20279
|
+
"operationId": "post /v1/organizations/{organization_id}/appointments/{id}/no-show",
|
|
19473
20280
|
"parameters": [
|
|
19474
20281
|
{
|
|
19475
20282
|
"description": "",
|
|
@@ -19527,7 +20334,7 @@
|
|
|
19527
20334
|
"post": {
|
|
19528
20335
|
"callbacks": {},
|
|
19529
20336
|
"description": "Cancela la cita y crea una nueva enlazada, en una transacción: si el hueco nuevo está tomado, la original queda intacta.",
|
|
19530
|
-
"operationId": "
|
|
20337
|
+
"operationId": "post /v1/organizations/{organization_id}/appointments/{id}/reschedule",
|
|
19531
20338
|
"parameters": [
|
|
19532
20339
|
{
|
|
19533
20340
|
"description": "",
|
|
@@ -19594,7 +20401,7 @@
|
|
|
19594
20401
|
"/v1/organizations/{organization_id}/bookings": {
|
|
19595
20402
|
"get": {
|
|
19596
20403
|
"callbacks": {},
|
|
19597
|
-
"operationId": "
|
|
20404
|
+
"operationId": "get /v1/organizations/{organization_id}/bookings",
|
|
19598
20405
|
"parameters": [
|
|
19599
20406
|
{
|
|
19600
20407
|
"description": "",
|
|
@@ -19671,7 +20478,7 @@
|
|
|
19671
20478
|
},
|
|
19672
20479
|
"post": {
|
|
19673
20480
|
"callbacks": {},
|
|
19674
|
-
"operationId": "
|
|
20481
|
+
"operationId": "post /v1/organizations/{organization_id}/bookings",
|
|
19675
20482
|
"parameters": [
|
|
19676
20483
|
{
|
|
19677
20484
|
"description": "",
|
|
@@ -19728,7 +20535,7 @@
|
|
|
19728
20535
|
"get": {
|
|
19729
20536
|
"callbacks": {},
|
|
19730
20537
|
"description": "Derivado de las reservas bloqueantes (pending/reserved/picked_up), turnaround incluido. Lectura de conveniencia: la garantía real ante carreras es el constraint al crear.",
|
|
19731
|
-
"operationId": "
|
|
20538
|
+
"operationId": "get /v1/organizations/{organization_id}/bookings/availability",
|
|
19732
20539
|
"parameters": [
|
|
19733
20540
|
{
|
|
19734
20541
|
"description": "",
|
|
@@ -19817,7 +20624,7 @@
|
|
|
19817
20624
|
"/v1/organizations/{organization_id}/bookings/{id}": {
|
|
19818
20625
|
"get": {
|
|
19819
20626
|
"callbacks": {},
|
|
19820
|
-
"operationId": "
|
|
20627
|
+
"operationId": "get /v1/organizations/{organization_id}/bookings/{id}",
|
|
19821
20628
|
"parameters": [
|
|
19822
20629
|
{
|
|
19823
20630
|
"description": "",
|
|
@@ -19873,7 +20680,7 @@
|
|
|
19873
20680
|
"/v1/organizations/{organization_id}/bookings/{id}/cancel": {
|
|
19874
20681
|
"post": {
|
|
19875
20682
|
"callbacks": {},
|
|
19876
|
-
"operationId": "
|
|
20683
|
+
"operationId": "post /v1/organizations/{organization_id}/bookings/{id}/cancel",
|
|
19877
20684
|
"parameters": [
|
|
19878
20685
|
{
|
|
19879
20686
|
"description": "",
|
|
@@ -19929,7 +20736,7 @@
|
|
|
19929
20736
|
"/v1/organizations/{organization_id}/bookings/{id}/pick-up": {
|
|
19930
20737
|
"post": {
|
|
19931
20738
|
"callbacks": {},
|
|
19932
|
-
"operationId": "
|
|
20739
|
+
"operationId": "post /v1/organizations/{organization_id}/bookings/{id}/pick-up",
|
|
19933
20740
|
"parameters": [
|
|
19934
20741
|
{
|
|
19935
20742
|
"description": "",
|
|
@@ -19985,7 +20792,7 @@
|
|
|
19985
20792
|
"/v1/organizations/{organization_id}/bookings/{id}/reserve": {
|
|
19986
20793
|
"post": {
|
|
19987
20794
|
"callbacks": {},
|
|
19988
|
-
"operationId": "
|
|
20795
|
+
"operationId": "post /v1/organizations/{organization_id}/bookings/{id}/reserve",
|
|
19989
20796
|
"parameters": [
|
|
19990
20797
|
{
|
|
19991
20798
|
"description": "",
|
|
@@ -20041,7 +20848,7 @@
|
|
|
20041
20848
|
"/v1/organizations/{organization_id}/bookings/{id}/return": {
|
|
20042
20849
|
"post": {
|
|
20043
20850
|
"callbacks": {},
|
|
20044
|
-
"operationId": "
|
|
20851
|
+
"operationId": "post /v1/organizations/{organization_id}/bookings/{id}/return",
|
|
20045
20852
|
"parameters": [
|
|
20046
20853
|
{
|
|
20047
20854
|
"description": "",
|
|
@@ -20098,7 +20905,7 @@
|
|
|
20098
20905
|
"get": {
|
|
20099
20906
|
"callbacks": {},
|
|
20100
20907
|
"description": "El estado real de lo declarable (objetos, workflows, agentes) como manifiesto. Es lo que `hablala pull`/`init` baja a archivos.",
|
|
20101
|
-
"operationId": "
|
|
20908
|
+
"operationId": "get /v1/organizations/{organization_id}/config",
|
|
20102
20909
|
"parameters": [
|
|
20103
20910
|
{
|
|
20104
20911
|
"description": "",
|
|
@@ -20142,7 +20949,7 @@
|
|
|
20142
20949
|
"put": {
|
|
20143
20950
|
"callbacks": {},
|
|
20144
20951
|
"description": "Reconcilia el manifiesto contra la cuenta: crear / actualizar / archivar (nunca borrar), en UNA transacción síncrona. `?dry_run=true` devuelve el diff sin tocar nada (es lo que `hablala plan` llama). El mismo manifiesto dos veces = no-op (idempotencia estructural; el header `Idempotency-Key` se acepta por consistencia pero no hace falta deduplicar).",
|
|
20145
|
-
"operationId": "
|
|
20952
|
+
"operationId": "put /v1/organizations/{organization_id}/config",
|
|
20146
20953
|
"parameters": [
|
|
20147
20954
|
{
|
|
20148
20955
|
"description": "",
|
|
@@ -20230,7 +21037,7 @@
|
|
|
20230
21037
|
"/v1/organizations/{organization_id}/conversations": {
|
|
20231
21038
|
"get": {
|
|
20232
21039
|
"callbacks": {},
|
|
20233
|
-
"operationId": "
|
|
21040
|
+
"operationId": "get /v1/organizations/{organization_id}/conversations",
|
|
20234
21041
|
"parameters": [
|
|
20235
21042
|
{
|
|
20236
21043
|
"description": "",
|
|
@@ -20263,7 +21070,7 @@
|
|
|
20263
21070
|
},
|
|
20264
21071
|
"post": {
|
|
20265
21072
|
"callbacks": {},
|
|
20266
|
-
"operationId": "
|
|
21073
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations",
|
|
20267
21074
|
"parameters": [
|
|
20268
21075
|
{
|
|
20269
21076
|
"description": "",
|
|
@@ -20320,7 +21127,7 @@
|
|
|
20320
21127
|
"post": {
|
|
20321
21128
|
"callbacks": {},
|
|
20322
21129
|
"description": "Idempotente por conjunto de participantes (patrón estándar de mensajería): abrir un DM con las mismas personas —1:1 o grupo— reabre el existente en vez de duplicarlo.",
|
|
20323
|
-
"operationId": "
|
|
21130
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/direct",
|
|
20324
21131
|
"parameters": [
|
|
20325
21132
|
{
|
|
20326
21133
|
"description": "",
|
|
@@ -20377,7 +21184,7 @@
|
|
|
20377
21184
|
"post": {
|
|
20378
21185
|
"callbacks": {},
|
|
20379
21186
|
"description": "Flujo estándar de 'nueva conversación': el DM no existe para nadie hasta su primer mensaje. Resuelve el DM (idempotente por conjunto de miembros) y envía el mensaje en una sola operación; solo entonces la conversación aparece —en vivo— en el sidebar de todos sus miembros. Devuelve la conversación y el mensaje creado.",
|
|
20380
|
-
"operationId": "
|
|
21187
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/direct/messages",
|
|
20381
21188
|
"parameters": [
|
|
20382
21189
|
{
|
|
20383
21190
|
"description": "",
|
|
@@ -20433,7 +21240,7 @@
|
|
|
20433
21240
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/archive": {
|
|
20434
21241
|
"delete": {
|
|
20435
21242
|
"callbacks": {},
|
|
20436
|
-
"operationId": "
|
|
21243
|
+
"operationId": "delete /v1/organizations/{organization_id}/conversations/{conversation_id}/archive",
|
|
20437
21244
|
"parameters": [
|
|
20438
21245
|
{
|
|
20439
21246
|
"description": "",
|
|
@@ -20477,7 +21284,7 @@
|
|
|
20477
21284
|
},
|
|
20478
21285
|
"post": {
|
|
20479
21286
|
"callbacks": {},
|
|
20480
|
-
"operationId": "
|
|
21287
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/{conversation_id}/archive",
|
|
20481
21288
|
"parameters": [
|
|
20482
21289
|
{
|
|
20483
21290
|
"description": "",
|
|
@@ -20524,7 +21331,7 @@
|
|
|
20524
21331
|
"get": {
|
|
20525
21332
|
"callbacks": {},
|
|
20526
21333
|
"description": "Adjuntos de la conversación (imágenes/documentos), más recientes primero.",
|
|
20527
|
-
"operationId": "
|
|
21334
|
+
"operationId": "get /v1/organizations/{organization_id}/conversations/{conversation_id}/media",
|
|
20528
21335
|
"parameters": [
|
|
20529
21336
|
{
|
|
20530
21337
|
"description": "",
|
|
@@ -20603,7 +21410,7 @@
|
|
|
20603
21410
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/members": {
|
|
20604
21411
|
"get": {
|
|
20605
21412
|
"callbacks": {},
|
|
20606
|
-
"operationId": "
|
|
21413
|
+
"operationId": "get /v1/organizations/{organization_id}/conversations/{conversation_id}/members",
|
|
20607
21414
|
"parameters": [
|
|
20608
21415
|
{
|
|
20609
21416
|
"description": "",
|
|
@@ -20658,7 +21465,7 @@
|
|
|
20658
21465
|
"post": {
|
|
20659
21466
|
"callbacks": {},
|
|
20660
21467
|
"description": "Invita a un usuario del tenant a un canal (flujo estándar: crear y luego 'añadir personas'). Idempotente: si ya es miembro, devuelve la membresía existente.",
|
|
20661
|
-
"operationId": "
|
|
21468
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/{conversation_id}/members",
|
|
20662
21469
|
"parameters": [
|
|
20663
21470
|
{
|
|
20664
21471
|
"description": "",
|
|
@@ -20735,7 +21542,7 @@
|
|
|
20735
21542
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/members/{user_id}": {
|
|
20736
21543
|
"delete": {
|
|
20737
21544
|
"callbacks": {},
|
|
20738
|
-
"operationId": "
|
|
21545
|
+
"operationId": "delete /v1/organizations/{organization_id}/conversations/{conversation_id}/members/{user_id}",
|
|
20739
21546
|
"parameters": [
|
|
20740
21547
|
{
|
|
20741
21548
|
"description": "",
|
|
@@ -20795,7 +21602,7 @@
|
|
|
20795
21602
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/members/{user_id}/ban": {
|
|
20796
21603
|
"delete": {
|
|
20797
21604
|
"callbacks": {},
|
|
20798
|
-
"operationId": "
|
|
21605
|
+
"operationId": "delete /v1/organizations/{organization_id}/conversations/{conversation_id}/members/{user_id}/ban",
|
|
20799
21606
|
"parameters": [
|
|
20800
21607
|
{
|
|
20801
21608
|
"description": "",
|
|
@@ -20854,7 +21661,7 @@
|
|
|
20854
21661
|
"post": {
|
|
20855
21662
|
"callbacks": {},
|
|
20856
21663
|
"description": "Solo admins (owner/admin). Bloquea al usuario: no puede volver ni ser re-agregado mientras el ban siga vigente. Sin `until` = permanente; con `until` (ISO 8601) = temporal.",
|
|
20857
|
-
"operationId": "
|
|
21664
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/{conversation_id}/members/{user_id}/ban",
|
|
20858
21665
|
"parameters": [
|
|
20859
21666
|
{
|
|
20860
21667
|
"description": "",
|
|
@@ -20926,7 +21733,7 @@
|
|
|
20926
21733
|
"patch": {
|
|
20927
21734
|
"callbacks": {},
|
|
20928
21735
|
"description": "Solo el owner. No se puede tocar al owner.",
|
|
20929
|
-
"operationId": "
|
|
21736
|
+
"operationId": "patch /v1/organizations/{organization_id}/conversations/{conversation_id}/members/{user_id}/role",
|
|
20930
21737
|
"parameters": [
|
|
20931
21738
|
{
|
|
20932
21739
|
"description": "",
|
|
@@ -21004,7 +21811,7 @@
|
|
|
21004
21811
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/messages": {
|
|
21005
21812
|
"get": {
|
|
21006
21813
|
"callbacks": {},
|
|
21007
|
-
"operationId": "
|
|
21814
|
+
"operationId": "get /v1/organizations/{organization_id}/conversations/{conversation_id}/messages",
|
|
21008
21815
|
"parameters": [
|
|
21009
21816
|
{
|
|
21010
21817
|
"description": "",
|
|
@@ -21059,7 +21866,7 @@
|
|
|
21059
21866
|
},
|
|
21060
21867
|
"post": {
|
|
21061
21868
|
"callbacks": {},
|
|
21062
|
-
"operationId": "
|
|
21869
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/{conversation_id}/messages",
|
|
21063
21870
|
"parameters": [
|
|
21064
21871
|
{
|
|
21065
21872
|
"description": "",
|
|
@@ -21126,7 +21933,7 @@
|
|
|
21126
21933
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/messages/changes": {
|
|
21127
21934
|
"get": {
|
|
21128
21935
|
"callbacks": {},
|
|
21129
|
-
"operationId": "
|
|
21936
|
+
"operationId": "get /v1/organizations/{organization_id}/conversations/{conversation_id}/messages/changes",
|
|
21130
21937
|
"parameters": [
|
|
21131
21938
|
{
|
|
21132
21939
|
"description": "",
|
|
@@ -21193,7 +22000,7 @@
|
|
|
21193
22000
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/messages/{id}": {
|
|
21194
22001
|
"delete": {
|
|
21195
22002
|
"callbacks": {},
|
|
21196
|
-
"operationId": "
|
|
22003
|
+
"operationId": "delete /v1/organizations/{organization_id}/conversations/{conversation_id}/messages/{id}",
|
|
21197
22004
|
"parameters": [
|
|
21198
22005
|
{
|
|
21199
22006
|
"description": "",
|
|
@@ -21251,7 +22058,7 @@
|
|
|
21251
22058
|
},
|
|
21252
22059
|
"patch": {
|
|
21253
22060
|
"callbacks": {},
|
|
21254
|
-
"operationId": "
|
|
22061
|
+
"operationId": "patch /v1/organizations/{organization_id}/conversations/{conversation_id}/messages/{id}",
|
|
21255
22062
|
"parameters": [
|
|
21256
22063
|
{
|
|
21257
22064
|
"description": "",
|
|
@@ -21327,7 +22134,7 @@
|
|
|
21327
22134
|
},
|
|
21328
22135
|
"put": {
|
|
21329
22136
|
"callbacks": {},
|
|
21330
|
-
"operationId": "
|
|
22137
|
+
"operationId": "put /v1/organizations/{organization_id}/conversations/{conversation_id}/messages/{id}",
|
|
21331
22138
|
"parameters": [
|
|
21332
22139
|
{
|
|
21333
22140
|
"description": "",
|
|
@@ -21405,7 +22212,7 @@
|
|
|
21405
22212
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/messages/{message_id}/reactions": {
|
|
21406
22213
|
"post": {
|
|
21407
22214
|
"callbacks": {},
|
|
21408
|
-
"operationId": "
|
|
22215
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/{conversation_id}/messages/{message_id}/reactions",
|
|
21409
22216
|
"parameters": [
|
|
21410
22217
|
{
|
|
21411
22218
|
"description": "",
|
|
@@ -21476,7 +22283,7 @@
|
|
|
21476
22283
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/messages/{message_id}/reactions/{emoji}": {
|
|
21477
22284
|
"delete": {
|
|
21478
22285
|
"callbacks": {},
|
|
21479
|
-
"operationId": "
|
|
22286
|
+
"operationId": "delete /v1/organizations/{organization_id}/conversations/{conversation_id}/messages/{message_id}/reactions/{emoji}",
|
|
21480
22287
|
"parameters": [
|
|
21481
22288
|
{
|
|
21482
22289
|
"description": "",
|
|
@@ -21547,7 +22354,7 @@
|
|
|
21547
22354
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/mute": {
|
|
21548
22355
|
"delete": {
|
|
21549
22356
|
"callbacks": {},
|
|
21550
|
-
"operationId": "
|
|
22357
|
+
"operationId": "delete /v1/organizations/{organization_id}/conversations/{conversation_id}/mute",
|
|
21551
22358
|
"parameters": [
|
|
21552
22359
|
{
|
|
21553
22360
|
"description": "",
|
|
@@ -21591,7 +22398,7 @@
|
|
|
21591
22398
|
},
|
|
21592
22399
|
"post": {
|
|
21593
22400
|
"callbacks": {},
|
|
21594
|
-
"operationId": "
|
|
22401
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/{conversation_id}/mute",
|
|
21595
22402
|
"parameters": [
|
|
21596
22403
|
{
|
|
21597
22404
|
"description": "",
|
|
@@ -21648,7 +22455,7 @@
|
|
|
21648
22455
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/pin": {
|
|
21649
22456
|
"delete": {
|
|
21650
22457
|
"callbacks": {},
|
|
21651
|
-
"operationId": "
|
|
22458
|
+
"operationId": "delete /v1/organizations/{organization_id}/conversations/{conversation_id}/pin",
|
|
21652
22459
|
"parameters": [
|
|
21653
22460
|
{
|
|
21654
22461
|
"description": "",
|
|
@@ -21692,7 +22499,7 @@
|
|
|
21692
22499
|
},
|
|
21693
22500
|
"post": {
|
|
21694
22501
|
"callbacks": {},
|
|
21695
|
-
"operationId": "
|
|
22502
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/{conversation_id}/pin",
|
|
21696
22503
|
"parameters": [
|
|
21697
22504
|
{
|
|
21698
22505
|
"description": "",
|
|
@@ -21738,7 +22545,7 @@
|
|
|
21738
22545
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/read": {
|
|
21739
22546
|
"put": {
|
|
21740
22547
|
"callbacks": {},
|
|
21741
|
-
"operationId": "
|
|
22548
|
+
"operationId": "put /v1/organizations/{organization_id}/conversations/{conversation_id}/read",
|
|
21742
22549
|
"parameters": [
|
|
21743
22550
|
{
|
|
21744
22551
|
"description": "",
|
|
@@ -21788,7 +22595,7 @@
|
|
|
21788
22595
|
"/v1/organizations/{organization_id}/conversations/{conversation_id}/report": {
|
|
21789
22596
|
"post": {
|
|
21790
22597
|
"callbacks": {},
|
|
21791
|
-
"operationId": "
|
|
22598
|
+
"operationId": "post /v1/organizations/{organization_id}/conversations/{conversation_id}/report",
|
|
21792
22599
|
"parameters": [
|
|
21793
22600
|
{
|
|
21794
22601
|
"description": "",
|
|
@@ -21848,7 +22655,7 @@
|
|
|
21848
22655
|
"/v1/organizations/{organization_id}/conversations/{id}": {
|
|
21849
22656
|
"delete": {
|
|
21850
22657
|
"callbacks": {},
|
|
21851
|
-
"operationId": "
|
|
22658
|
+
"operationId": "delete /v1/organizations/{organization_id}/conversations/{id}",
|
|
21852
22659
|
"parameters": [
|
|
21853
22660
|
{
|
|
21854
22661
|
"description": "",
|
|
@@ -21885,7 +22692,7 @@
|
|
|
21885
22692
|
},
|
|
21886
22693
|
"get": {
|
|
21887
22694
|
"callbacks": {},
|
|
21888
|
-
"operationId": "
|
|
22695
|
+
"operationId": "get /v1/organizations/{organization_id}/conversations/{id}",
|
|
21889
22696
|
"parameters": [
|
|
21890
22697
|
{
|
|
21891
22698
|
"description": "",
|
|
@@ -21940,7 +22747,7 @@
|
|
|
21940
22747
|
"patch": {
|
|
21941
22748
|
"callbacks": {},
|
|
21942
22749
|
"description": "Solo admins (owner/admin). Los campos ausentes no se tocan.",
|
|
21943
|
-
"operationId": "
|
|
22750
|
+
"operationId": "patch /v1/organizations/{organization_id}/conversations/{id}",
|
|
21944
22751
|
"parameters": [
|
|
21945
22752
|
{
|
|
21946
22753
|
"description": "",
|
|
@@ -22016,7 +22823,7 @@
|
|
|
22016
22823
|
"put": {
|
|
22017
22824
|
"callbacks": {},
|
|
22018
22825
|
"description": "Solo admins (owner/admin). Los campos ausentes no se tocan.",
|
|
22019
|
-
"operationId": "
|
|
22826
|
+
"operationId": "put /v1/organizations/{organization_id}/conversations/{id}",
|
|
22020
22827
|
"parameters": [
|
|
22021
22828
|
{
|
|
22022
22829
|
"description": "",
|
|
@@ -22094,7 +22901,7 @@
|
|
|
22094
22901
|
"get": {
|
|
22095
22902
|
"callbacks": {},
|
|
22096
22903
|
"description": "Los dominios propios solicitados por la organización, con su estado de verificación.",
|
|
22097
|
-
"operationId": "
|
|
22904
|
+
"operationId": "get /v1/organizations/{organization_id}/domains",
|
|
22098
22905
|
"parameters": [
|
|
22099
22906
|
{
|
|
22100
22907
|
"description": "",
|
|
@@ -22128,7 +22935,7 @@
|
|
|
22128
22935
|
"post": {
|
|
22129
22936
|
"callbacks": {},
|
|
22130
22937
|
"description": "Registra un dominio para la organización en estado `pending` y arranca el workflow de verificación (aprovisiona en el proveedor → verifica DNS → emite TLS → activa). La respuesta incluye el reto DNS que el cliente debe publicar (cuando el proveedor lo emite).",
|
|
22131
|
-
"operationId": "
|
|
22938
|
+
"operationId": "post /v1/organizations/{organization_id}/domains",
|
|
22132
22939
|
"parameters": [
|
|
22133
22940
|
{
|
|
22134
22941
|
"description": "",
|
|
@@ -22195,7 +23002,7 @@
|
|
|
22195
23002
|
"delete": {
|
|
22196
23003
|
"callbacks": {},
|
|
22197
23004
|
"description": "Des-aprovisiona el dominio en el proveedor y lo borra.",
|
|
22198
|
-
"operationId": "
|
|
23005
|
+
"operationId": "delete /v1/organizations/{organization_id}/domains/{id}",
|
|
22199
23006
|
"parameters": [
|
|
22200
23007
|
{
|
|
22201
23008
|
"description": "",
|
|
@@ -22242,7 +23049,7 @@
|
|
|
22242
23049
|
},
|
|
22243
23050
|
"get": {
|
|
22244
23051
|
"callbacks": {},
|
|
22245
|
-
"operationId": "
|
|
23052
|
+
"operationId": "get /v1/organizations/{organization_id}/domains/{id}",
|
|
22246
23053
|
"parameters": [
|
|
22247
23054
|
{
|
|
22248
23055
|
"description": "",
|
|
@@ -22299,7 +23106,7 @@
|
|
|
22299
23106
|
"post": {
|
|
22300
23107
|
"callbacks": {},
|
|
22301
23108
|
"description": "Conecta dos records vía un tipo de relación (`relationship` = slug). Idempotente: crear la misma arista dos veces no falla.",
|
|
22302
|
-
"operationId": "
|
|
23109
|
+
"operationId": "post /v1/organizations/{organization_id}/edges",
|
|
22303
23110
|
"parameters": [
|
|
22304
23111
|
{
|
|
22305
23112
|
"description": "",
|
|
@@ -22365,7 +23172,7 @@
|
|
|
22365
23172
|
"/v1/organizations/{organization_id}/edges/{id}": {
|
|
22366
23173
|
"delete": {
|
|
22367
23174
|
"callbacks": {},
|
|
22368
|
-
"operationId": "
|
|
23175
|
+
"operationId": "delete /v1/organizations/{organization_id}/edges/{id}",
|
|
22369
23176
|
"parameters": [
|
|
22370
23177
|
{
|
|
22371
23178
|
"description": "",
|
|
@@ -22405,7 +23212,7 @@
|
|
|
22405
23212
|
"post": {
|
|
22406
23213
|
"callbacks": {},
|
|
22407
23214
|
"description": "Devuelve el grafo de datos del tenant como `nodes` + `edges` planos (knowledge graph), acotado por `limit` y ordenado por grado desc (los nodos más conectados primero). Filtra por el ABAC del scope. Base de la vista de grafo global.",
|
|
22408
|
-
"operationId": "
|
|
23215
|
+
"operationId": "post /v1/organizations/{organization_id}/graph",
|
|
22409
23216
|
"parameters": [
|
|
22410
23217
|
{
|
|
22411
23218
|
"description": "",
|
|
@@ -22462,7 +23269,7 @@
|
|
|
22462
23269
|
"post": {
|
|
22463
23270
|
"callbacks": {},
|
|
22464
23271
|
"description": "Devuelve el vecindario de un nodo — sus vecinos directos (1 salto) + las aristas que los unen — como `nodes` + `edges`. Es el *expand-on-demand* (progressive disclosure) para explorar el grafo sin cargarlo entero.",
|
|
22465
|
-
"operationId": "
|
|
23272
|
+
"operationId": "post /v1/organizations/{organization_id}/graph/expand",
|
|
22466
23273
|
"parameters": [
|
|
22467
23274
|
{
|
|
22468
23275
|
"description": "",
|
|
@@ -22528,7 +23335,7 @@
|
|
|
22528
23335
|
"/v1/organizations/{organization_id}/invitations": {
|
|
22529
23336
|
"get": {
|
|
22530
23337
|
"callbacks": {},
|
|
22531
|
-
"operationId": "
|
|
23338
|
+
"operationId": "get /v1/organizations/{organization_id}/invitations",
|
|
22532
23339
|
"parameters": [
|
|
22533
23340
|
{
|
|
22534
23341
|
"description": "",
|
|
@@ -22572,7 +23379,7 @@
|
|
|
22572
23379
|
"post": {
|
|
22573
23380
|
"callbacks": {},
|
|
22574
23381
|
"description": "Dos modalidades según el cuerpo:\n\n* `{ \"invitation\": { \"email\": \"…\", \"roleId\": \"role_…\" } }` — invitación por **correo** (o para reenviar/onboarding de equipo). Se acepta canjeando el token del email.\n* `{ \"invitation\": { \"userId\": \"user_…\", \"roleId\": \"role_…\" } }` — invitación **dirigida** a un usuario ya existente (encontrado por su username en el buscador). Le llega a su bandeja (`GET /me/invitations`) y la acepta/rechaza desde la app: NO se le añade sin consentimiento (patrón *message request*, doctrina anti-spam).",
|
|
22575
|
-
"operationId": "
|
|
23382
|
+
"operationId": "post /v1/organizations/{organization_id}/invitations",
|
|
22576
23383
|
"parameters": [
|
|
22577
23384
|
{
|
|
22578
23385
|
"description": "",
|
|
@@ -22649,7 +23456,7 @@
|
|
|
22649
23456
|
"post": {
|
|
22650
23457
|
"callbacks": {},
|
|
22651
23458
|
"description": "Crea (o reenvía) invitaciones para una lista de emails, todos con el mismo rol opcional. No es todo-o-nada: cada email se procesa aparte y su resultado se refleja por separado (`sent` / `already` / `invalid`).",
|
|
22652
|
-
"operationId": "
|
|
23459
|
+
"operationId": "post /v1/organizations/{organization_id}/invitations/bulk",
|
|
22653
23460
|
"parameters": [
|
|
22654
23461
|
{
|
|
22655
23462
|
"description": "",
|
|
@@ -22715,7 +23522,7 @@
|
|
|
22715
23522
|
"/v1/organizations/{organization_id}/invitations/{id}": {
|
|
22716
23523
|
"delete": {
|
|
22717
23524
|
"callbacks": {},
|
|
22718
|
-
"operationId": "
|
|
23525
|
+
"operationId": "delete /v1/organizations/{organization_id}/invitations/{id}",
|
|
22719
23526
|
"parameters": [
|
|
22720
23527
|
{
|
|
22721
23528
|
"description": "",
|
|
@@ -22762,7 +23569,7 @@
|
|
|
22762
23569
|
},
|
|
22763
23570
|
"get": {
|
|
22764
23571
|
"callbacks": {},
|
|
22765
|
-
"operationId": "
|
|
23572
|
+
"operationId": "get /v1/organizations/{organization_id}/invitations/{id}",
|
|
22766
23573
|
"parameters": [
|
|
22767
23574
|
{
|
|
22768
23575
|
"description": "",
|
|
@@ -22818,7 +23625,7 @@
|
|
|
22818
23625
|
"/v1/organizations/{organization_id}/invite-link": {
|
|
22819
23626
|
"delete": {
|
|
22820
23627
|
"callbacks": {},
|
|
22821
|
-
"operationId": "
|
|
23628
|
+
"operationId": "delete /v1/organizations/{organization_id}/invite-link",
|
|
22822
23629
|
"parameters": [
|
|
22823
23630
|
{
|
|
22824
23631
|
"description": "",
|
|
@@ -22855,7 +23662,7 @@
|
|
|
22855
23662
|
"get": {
|
|
22856
23663
|
"callbacks": {},
|
|
22857
23664
|
"description": "Devuelve el link activo, creándolo si no existe (lazy). El secreto en claro (`url`) solo viaja cuando se acaba de crear; en llamadas siguientes se devuelve el link sin el claro (que no se puede recuperar).",
|
|
22858
|
-
"operationId": "
|
|
23665
|
+
"operationId": "get /v1/organizations/{organization_id}/invite-link",
|
|
22859
23666
|
"parameters": [
|
|
22860
23667
|
{
|
|
22861
23668
|
"description": "",
|
|
@@ -22901,7 +23708,7 @@
|
|
|
22901
23708
|
"post": {
|
|
22902
23709
|
"callbacks": {},
|
|
22903
23710
|
"description": "Revoca el link activo (si hay) y crea uno nuevo. El secreto anterior deja de canjear al instante; el nuevo claro (`url`) viaja en la respuesta.",
|
|
22904
|
-
"operationId": "
|
|
23711
|
+
"operationId": "post /v1/organizations/{organization_id}/invite-link/rotate",
|
|
22905
23712
|
"parameters": [
|
|
22906
23713
|
{
|
|
22907
23714
|
"description": "",
|
|
@@ -22946,7 +23753,7 @@
|
|
|
22946
23753
|
"/v1/organizations/{organization_id}/invoices": {
|
|
22947
23754
|
"get": {
|
|
22948
23755
|
"callbacks": {},
|
|
22949
|
-
"operationId": "
|
|
23756
|
+
"operationId": "get /v1/organizations/{organization_id}/invoices",
|
|
22950
23757
|
"parameters": [
|
|
22951
23758
|
{
|
|
22952
23759
|
"description": "",
|
|
@@ -22990,7 +23797,7 @@
|
|
|
22990
23797
|
},
|
|
22991
23798
|
"post": {
|
|
22992
23799
|
"callbacks": {},
|
|
22993
|
-
"operationId": "
|
|
23800
|
+
"operationId": "post /v1/organizations/{organization_id}/invoices",
|
|
22994
23801
|
"parameters": [
|
|
22995
23802
|
{
|
|
22996
23803
|
"description": "",
|
|
@@ -23046,7 +23853,7 @@
|
|
|
23046
23853
|
"/v1/organizations/{organization_id}/invoices/{id}": {
|
|
23047
23854
|
"delete": {
|
|
23048
23855
|
"callbacks": {},
|
|
23049
|
-
"operationId": "
|
|
23856
|
+
"operationId": "delete /v1/organizations/{organization_id}/invoices/{id}",
|
|
23050
23857
|
"parameters": [
|
|
23051
23858
|
{
|
|
23052
23859
|
"description": "",
|
|
@@ -23093,7 +23900,7 @@
|
|
|
23093
23900
|
},
|
|
23094
23901
|
"get": {
|
|
23095
23902
|
"callbacks": {},
|
|
23096
|
-
"operationId": "
|
|
23903
|
+
"operationId": "get /v1/organizations/{organization_id}/invoices/{id}",
|
|
23097
23904
|
"parameters": [
|
|
23098
23905
|
{
|
|
23099
23906
|
"description": "",
|
|
@@ -23147,7 +23954,7 @@
|
|
|
23147
23954
|
},
|
|
23148
23955
|
"patch": {
|
|
23149
23956
|
"callbacks": {},
|
|
23150
|
-
"operationId": "
|
|
23957
|
+
"operationId": "patch /v1/organizations/{organization_id}/invoices/{id}",
|
|
23151
23958
|
"parameters": [
|
|
23152
23959
|
{
|
|
23153
23960
|
"description": "",
|
|
@@ -23212,7 +24019,7 @@
|
|
|
23212
24019
|
},
|
|
23213
24020
|
"put": {
|
|
23214
24021
|
"callbacks": {},
|
|
23215
|
-
"operationId": "
|
|
24022
|
+
"operationId": "put /v1/organizations/{organization_id}/invoices/{id}",
|
|
23216
24023
|
"parameters": [
|
|
23217
24024
|
{
|
|
23218
24025
|
"description": "",
|
|
@@ -23279,7 +24086,7 @@
|
|
|
23279
24086
|
"/v1/organizations/{organization_id}/invoices/{id}/finalize": {
|
|
23280
24087
|
"post": {
|
|
23281
24088
|
"callbacks": {},
|
|
23282
|
-
"operationId": "
|
|
24089
|
+
"operationId": "post /v1/organizations/{organization_id}/invoices/{id}/finalize",
|
|
23283
24090
|
"parameters": [
|
|
23284
24091
|
{
|
|
23285
24092
|
"description": "",
|
|
@@ -23335,7 +24142,7 @@
|
|
|
23335
24142
|
"/v1/organizations/{organization_id}/invoices/{id}/mark-uncollectible": {
|
|
23336
24143
|
"post": {
|
|
23337
24144
|
"callbacks": {},
|
|
23338
|
-
"operationId": "
|
|
24145
|
+
"operationId": "post /v1/organizations/{organization_id}/invoices/{id}/mark-uncollectible",
|
|
23339
24146
|
"parameters": [
|
|
23340
24147
|
{
|
|
23341
24148
|
"description": "",
|
|
@@ -23391,7 +24198,7 @@
|
|
|
23391
24198
|
"/v1/organizations/{organization_id}/invoices/{id}/void": {
|
|
23392
24199
|
"post": {
|
|
23393
24200
|
"callbacks": {},
|
|
23394
|
-
"operationId": "
|
|
24201
|
+
"operationId": "post /v1/organizations/{organization_id}/invoices/{id}/void",
|
|
23395
24202
|
"parameters": [
|
|
23396
24203
|
{
|
|
23397
24204
|
"description": "",
|
|
@@ -23447,7 +24254,7 @@
|
|
|
23447
24254
|
"/v1/organizations/{organization_id}/invoices/{invoice_id}/line-items": {
|
|
23448
24255
|
"post": {
|
|
23449
24256
|
"callbacks": {},
|
|
23450
|
-
"operationId": "
|
|
24257
|
+
"operationId": "post /v1/organizations/{organization_id}/invoices/{invoice_id}/line-items",
|
|
23451
24258
|
"parameters": [
|
|
23452
24259
|
{
|
|
23453
24260
|
"description": "",
|
|
@@ -23514,7 +24321,7 @@
|
|
|
23514
24321
|
"/v1/organizations/{organization_id}/invoices/{invoice_id}/line-items/{id}": {
|
|
23515
24322
|
"delete": {
|
|
23516
24323
|
"callbacks": {},
|
|
23517
|
-
"operationId": "
|
|
24324
|
+
"operationId": "delete /v1/organizations/{organization_id}/invoices/{invoice_id}/line-items/{id}",
|
|
23518
24325
|
"parameters": [
|
|
23519
24326
|
{
|
|
23520
24327
|
"description": "",
|
|
@@ -23572,7 +24379,7 @@
|
|
|
23572
24379
|
},
|
|
23573
24380
|
"patch": {
|
|
23574
24381
|
"callbacks": {},
|
|
23575
|
-
"operationId": "
|
|
24382
|
+
"operationId": "patch /v1/organizations/{organization_id}/invoices/{invoice_id}/line-items/{id}",
|
|
23576
24383
|
"parameters": [
|
|
23577
24384
|
{
|
|
23578
24385
|
"description": "",
|
|
@@ -23650,7 +24457,7 @@
|
|
|
23650
24457
|
"/v1/organizations/{organization_id}/locations": {
|
|
23651
24458
|
"get": {
|
|
23652
24459
|
"callbacks": {},
|
|
23653
|
-
"operationId": "
|
|
24460
|
+
"operationId": "get /v1/organizations/{organization_id}/locations",
|
|
23654
24461
|
"parameters": [
|
|
23655
24462
|
{
|
|
23656
24463
|
"description": "",
|
|
@@ -23683,7 +24490,7 @@
|
|
|
23683
24490
|
},
|
|
23684
24491
|
"post": {
|
|
23685
24492
|
"callbacks": {},
|
|
23686
|
-
"operationId": "
|
|
24493
|
+
"operationId": "post /v1/organizations/{organization_id}/locations",
|
|
23687
24494
|
"parameters": [
|
|
23688
24495
|
{
|
|
23689
24496
|
"description": "",
|
|
@@ -23740,7 +24547,7 @@
|
|
|
23740
24547
|
"post": {
|
|
23741
24548
|
"callbacks": {},
|
|
23742
24549
|
"description": "Crea, si no existen, la internal inicial (Almacén) y las tres virtuales (Proveedores, Clientes, Ajustes de inventario) que balancean la doble entrada.",
|
|
23743
|
-
"operationId": "
|
|
24550
|
+
"operationId": "post /v1/organizations/{organization_id}/locations/ensure-defaults",
|
|
23744
24551
|
"parameters": [
|
|
23745
24552
|
{
|
|
23746
24553
|
"description": "",
|
|
@@ -23775,7 +24582,7 @@
|
|
|
23775
24582
|
"/v1/organizations/{organization_id}/locations/{id}": {
|
|
23776
24583
|
"get": {
|
|
23777
24584
|
"callbacks": {},
|
|
23778
|
-
"operationId": "
|
|
24585
|
+
"operationId": "get /v1/organizations/{organization_id}/locations/{id}",
|
|
23779
24586
|
"parameters": [
|
|
23780
24587
|
{
|
|
23781
24588
|
"description": "",
|
|
@@ -23829,7 +24636,7 @@
|
|
|
23829
24636
|
},
|
|
23830
24637
|
"patch": {
|
|
23831
24638
|
"callbacks": {},
|
|
23832
|
-
"operationId": "
|
|
24639
|
+
"operationId": "patch /v1/organizations/{organization_id}/locations/{id}",
|
|
23833
24640
|
"parameters": [
|
|
23834
24641
|
{
|
|
23835
24642
|
"description": "",
|
|
@@ -23894,7 +24701,7 @@
|
|
|
23894
24701
|
},
|
|
23895
24702
|
"put": {
|
|
23896
24703
|
"callbacks": {},
|
|
23897
|
-
"operationId": "
|
|
24704
|
+
"operationId": "put /v1/organizations/{organization_id}/locations/{id}",
|
|
23898
24705
|
"parameters": [
|
|
23899
24706
|
{
|
|
23900
24707
|
"description": "",
|
|
@@ -23961,7 +24768,7 @@
|
|
|
23961
24768
|
"/v1/organizations/{organization_id}/mentions": {
|
|
23962
24769
|
"get": {
|
|
23963
24770
|
"callbacks": {},
|
|
23964
|
-
"operationId": "
|
|
24771
|
+
"operationId": "get /v1/organizations/{organization_id}/mentions",
|
|
23965
24772
|
"parameters": [
|
|
23966
24773
|
{
|
|
23967
24774
|
"description": "",
|
|
@@ -23997,7 +24804,7 @@
|
|
|
23997
24804
|
"post": {
|
|
23998
24805
|
"callbacks": {},
|
|
23999
24806
|
"description": "La web lo llama al aprobar `…/oauth/authorize`: crea el grant aprobado y devuelve el `code` de un solo uso que el navegador reenvía al CLI vía redirect a `127.0.0.1`.",
|
|
24000
|
-
"operationId": "
|
|
24807
|
+
"operationId": "post /v1/organizations/{organization_id}/oauth/grants",
|
|
24001
24808
|
"parameters": [
|
|
24002
24809
|
{
|
|
24003
24810
|
"description": "",
|
|
@@ -24064,7 +24871,7 @@
|
|
|
24064
24871
|
"post": {
|
|
24065
24872
|
"callbacks": {},
|
|
24066
24873
|
"description": "El consent: fija la organización del path y los permisos elegidos (intersectados con los del aprobador) en el grant. El CLI que sondea recibirá su `mat_…` en el siguiente poll.",
|
|
24067
|
-
"operationId": "
|
|
24874
|
+
"operationId": "post /v1/organizations/{organization_id}/oauth/grants/{user_code}/approve",
|
|
24068
24875
|
"parameters": [
|
|
24069
24876
|
{
|
|
24070
24877
|
"description": "",
|
|
@@ -24151,7 +24958,7 @@
|
|
|
24151
24958
|
"/v1/organizations/{organization_id}/objects": {
|
|
24152
24959
|
"get": {
|
|
24153
24960
|
"callbacks": {},
|
|
24154
|
-
"operationId": "
|
|
24961
|
+
"operationId": "get /v1/organizations/{organization_id}/objects",
|
|
24155
24962
|
"parameters": [
|
|
24156
24963
|
{
|
|
24157
24964
|
"description": "",
|
|
@@ -24184,7 +24991,7 @@
|
|
|
24184
24991
|
},
|
|
24185
24992
|
"post": {
|
|
24186
24993
|
"callbacks": {},
|
|
24187
|
-
"operationId": "
|
|
24994
|
+
"operationId": "post /v1/organizations/{organization_id}/objects",
|
|
24188
24995
|
"parameters": [
|
|
24189
24996
|
{
|
|
24190
24997
|
"description": "",
|
|
@@ -24241,7 +25048,7 @@
|
|
|
24241
25048
|
"delete": {
|
|
24242
25049
|
"callbacks": {},
|
|
24243
25050
|
"description": "Soft delete: marca `isArchived` en vez de borrar (los records persisten).",
|
|
24244
|
-
"operationId": "
|
|
25051
|
+
"operationId": "delete /v1/organizations/{organization_id}/objects/{id}",
|
|
24245
25052
|
"parameters": [
|
|
24246
25053
|
{
|
|
24247
25054
|
"description": "",
|
|
@@ -24278,7 +25085,7 @@
|
|
|
24278
25085
|
},
|
|
24279
25086
|
"get": {
|
|
24280
25087
|
"callbacks": {},
|
|
24281
|
-
"operationId": "
|
|
25088
|
+
"operationId": "get /v1/organizations/{organization_id}/objects/{id}",
|
|
24282
25089
|
"parameters": [
|
|
24283
25090
|
{
|
|
24284
25091
|
"description": "",
|
|
@@ -24332,7 +25139,7 @@
|
|
|
24332
25139
|
},
|
|
24333
25140
|
"patch": {
|
|
24334
25141
|
"callbacks": {},
|
|
24335
|
-
"operationId": "
|
|
25142
|
+
"operationId": "patch /v1/organizations/{organization_id}/objects/{id}",
|
|
24336
25143
|
"parameters": [
|
|
24337
25144
|
{
|
|
24338
25145
|
"description": "",
|
|
@@ -24397,7 +25204,7 @@
|
|
|
24397
25204
|
},
|
|
24398
25205
|
"put": {
|
|
24399
25206
|
"callbacks": {},
|
|
24400
|
-
"operationId": "
|
|
25207
|
+
"operationId": "put /v1/organizations/{organization_id}/objects/{id}",
|
|
24401
25208
|
"parameters": [
|
|
24402
25209
|
{
|
|
24403
25210
|
"description": "",
|
|
@@ -24464,7 +25271,7 @@
|
|
|
24464
25271
|
"/v1/organizations/{organization_id}/objects/{object_id}/attributes": {
|
|
24465
25272
|
"get": {
|
|
24466
25273
|
"callbacks": {},
|
|
24467
|
-
"operationId": "
|
|
25274
|
+
"operationId": "get /v1/organizations/{organization_id}/objects/{object_id}/attributes",
|
|
24468
25275
|
"parameters": [
|
|
24469
25276
|
{
|
|
24470
25277
|
"description": "",
|
|
@@ -24508,7 +25315,7 @@
|
|
|
24508
25315
|
},
|
|
24509
25316
|
"post": {
|
|
24510
25317
|
"callbacks": {},
|
|
24511
|
-
"operationId": "
|
|
25318
|
+
"operationId": "post /v1/organizations/{organization_id}/objects/{object_id}/attributes",
|
|
24512
25319
|
"parameters": [
|
|
24513
25320
|
{
|
|
24514
25321
|
"description": "",
|
|
@@ -24575,7 +25382,7 @@
|
|
|
24575
25382
|
"/v1/organizations/{organization_id}/objects/{object_id}/attributes/{id}": {
|
|
24576
25383
|
"patch": {
|
|
24577
25384
|
"callbacks": {},
|
|
24578
|
-
"operationId": "
|
|
25385
|
+
"operationId": "patch /v1/organizations/{organization_id}/objects/{object_id}/attributes/{id}",
|
|
24579
25386
|
"parameters": [
|
|
24580
25387
|
{
|
|
24581
25388
|
"description": "",
|
|
@@ -24651,7 +25458,7 @@
|
|
|
24651
25458
|
},
|
|
24652
25459
|
"put": {
|
|
24653
25460
|
"callbacks": {},
|
|
24654
|
-
"operationId": "
|
|
25461
|
+
"operationId": "put /v1/organizations/{organization_id}/objects/{object_id}/attributes/{id}",
|
|
24655
25462
|
"parameters": [
|
|
24656
25463
|
{
|
|
24657
25464
|
"description": "",
|
|
@@ -24729,7 +25536,7 @@
|
|
|
24729
25536
|
"/v1/organizations/{organization_id}/objects/{object_slug}/records": {
|
|
24730
25537
|
"post": {
|
|
24731
25538
|
"callbacks": {},
|
|
24732
|
-
"operationId": "
|
|
25539
|
+
"operationId": "post /v1/organizations/{organization_id}/objects/{object_slug}/records",
|
|
24733
25540
|
"parameters": [
|
|
24734
25541
|
{
|
|
24735
25542
|
"description": "",
|
|
@@ -24807,7 +25614,7 @@
|
|
|
24807
25614
|
"get": {
|
|
24808
25615
|
"callbacks": {},
|
|
24809
25616
|
"description": "Lista los records SOFT-DELETED del objeto (`deleted_at IS NOT NULL`), para restaurarlos. Misma lectura gobernada que `POST /query` (RBAC + ABAC por fila + field_mask + paginación keyset), sobre el otro lado de `deleted_at`. Gate RBAC: `records:delete`.",
|
|
24810
|
-
"operationId": "
|
|
25617
|
+
"operationId": "get /v1/organizations/{organization_id}/objects/{object_slug}/records/trash",
|
|
24811
25618
|
"parameters": [
|
|
24812
25619
|
{
|
|
24813
25620
|
"description": "",
|
|
@@ -24895,7 +25702,7 @@
|
|
|
24895
25702
|
"/v1/organizations/{organization_id}/objects/{object_slug}/records/{id}": {
|
|
24896
25703
|
"delete": {
|
|
24897
25704
|
"callbacks": {},
|
|
24898
|
-
"operationId": "
|
|
25705
|
+
"operationId": "delete /v1/organizations/{organization_id}/objects/{object_slug}/records/{id}",
|
|
24899
25706
|
"parameters": [
|
|
24900
25707
|
{
|
|
24901
25708
|
"description": "",
|
|
@@ -24963,7 +25770,7 @@
|
|
|
24963
25770
|
},
|
|
24964
25771
|
"get": {
|
|
24965
25772
|
"callbacks": {},
|
|
24966
|
-
"operationId": "
|
|
25773
|
+
"operationId": "get /v1/organizations/{organization_id}/objects/{object_slug}/records/{id}",
|
|
24967
25774
|
"parameters": [
|
|
24968
25775
|
{
|
|
24969
25776
|
"description": "",
|
|
@@ -25038,7 +25845,7 @@
|
|
|
25038
25845
|
},
|
|
25039
25846
|
"patch": {
|
|
25040
25847
|
"callbacks": {},
|
|
25041
|
-
"operationId": "
|
|
25848
|
+
"operationId": "patch /v1/organizations/{organization_id}/objects/{object_slug}/records/{id}",
|
|
25042
25849
|
"parameters": [
|
|
25043
25850
|
{
|
|
25044
25851
|
"description": "",
|
|
@@ -25134,7 +25941,7 @@
|
|
|
25134
25941
|
},
|
|
25135
25942
|
"put": {
|
|
25136
25943
|
"callbacks": {},
|
|
25137
|
-
"operationId": "
|
|
25944
|
+
"operationId": "put /v1/organizations/{organization_id}/objects/{object_slug}/records/{id}",
|
|
25138
25945
|
"parameters": [
|
|
25139
25946
|
{
|
|
25140
25947
|
"description": "",
|
|
@@ -25233,7 +26040,7 @@
|
|
|
25233
26040
|
"get": {
|
|
25234
26041
|
"callbacks": {},
|
|
25235
26042
|
"description": "Devuelve cuántos edges se desvincularían y qué referencias core BLOQUEARÍAN el borrado (restrict-on-delete), sin mutar nada. Alimenta la confirmación dependent-aware de la UI. Misma fuente que el guard del borrado real, así que preview y borrado no divergen. Gate `records:delete` + ABAC de escritura por fila.",
|
|
25236
|
-
"operationId": "
|
|
26043
|
+
"operationId": "get /v1/organizations/{organization_id}/objects/{object_slug}/records/{record_id}/dependencies",
|
|
25237
26044
|
"parameters": [
|
|
25238
26045
|
{
|
|
25239
26046
|
"description": "",
|
|
@@ -25310,7 +26117,7 @@
|
|
|
25310
26117
|
"/v1/organizations/{organization_id}/objects/{object_slug}/records/{record_id}/events": {
|
|
25311
26118
|
"get": {
|
|
25312
26119
|
"callbacks": {},
|
|
25313
|
-
"operationId": "
|
|
26120
|
+
"operationId": "get /v1/organizations/{organization_id}/objects/{object_slug}/records/{record_id}/events",
|
|
25314
26121
|
"parameters": [
|
|
25315
26122
|
{
|
|
25316
26123
|
"description": "",
|
|
@@ -25367,7 +26174,7 @@
|
|
|
25367
26174
|
"/v1/organizations/{organization_id}/objects/{object_slug}/records/{record_id}/restore": {
|
|
25368
26175
|
"post": {
|
|
25369
26176
|
"callbacks": {},
|
|
25370
|
-
"operationId": "
|
|
26177
|
+
"operationId": "post /v1/organizations/{organization_id}/objects/{object_slug}/records/{record_id}/restore",
|
|
25371
26178
|
"parameters": [
|
|
25372
26179
|
{
|
|
25373
26180
|
"description": "",
|
|
@@ -25454,7 +26261,7 @@
|
|
|
25454
26261
|
"/v1/organizations/{organization_id}/organization_membership": {
|
|
25455
26262
|
"delete": {
|
|
25456
26263
|
"callbacks": {},
|
|
25457
|
-
"operationId": "
|
|
26264
|
+
"operationId": "delete /v1/organizations/{organization_id}/organization_membership",
|
|
25458
26265
|
"parameters": [
|
|
25459
26266
|
{
|
|
25460
26267
|
"description": "",
|
|
@@ -25492,7 +26299,7 @@
|
|
|
25492
26299
|
"/v1/organizations/{organization_id}/organization_memberships": {
|
|
25493
26300
|
"get": {
|
|
25494
26301
|
"callbacks": {},
|
|
25495
|
-
"operationId": "
|
|
26302
|
+
"operationId": "get /v1/organizations/{organization_id}/organization_memberships",
|
|
25496
26303
|
"parameters": [
|
|
25497
26304
|
{
|
|
25498
26305
|
"description": "",
|
|
@@ -25538,7 +26345,7 @@
|
|
|
25538
26345
|
"get": {
|
|
25539
26346
|
"callbacks": {},
|
|
25540
26347
|
"description": "Paridad con el descubrimiento personal (`/v1/me/people/lookup`): resuelve un miembro del tenant por email exacto sin listar a todos. Devuelve `data: null` si nadie coincide.",
|
|
25541
|
-
"operationId": "
|
|
26348
|
+
"operationId": "get /v1/organizations/{organization_id}/organization_memberships/lookup",
|
|
25542
26349
|
"parameters": [
|
|
25543
26350
|
{
|
|
25544
26351
|
"description": "",
|
|
@@ -25584,7 +26391,7 @@
|
|
|
25584
26391
|
"/v1/organizations/{organization_id}/organization_memberships/{id}": {
|
|
25585
26392
|
"delete": {
|
|
25586
26393
|
"callbacks": {},
|
|
25587
|
-
"operationId": "
|
|
26394
|
+
"operationId": "delete /v1/organizations/{organization_id}/organization_memberships/{id}",
|
|
25588
26395
|
"parameters": [
|
|
25589
26396
|
{
|
|
25590
26397
|
"description": "",
|
|
@@ -25631,7 +26438,7 @@
|
|
|
25631
26438
|
},
|
|
25632
26439
|
"get": {
|
|
25633
26440
|
"callbacks": {},
|
|
25634
|
-
"operationId": "
|
|
26441
|
+
"operationId": "get /v1/organizations/{organization_id}/organization_memberships/{id}",
|
|
25635
26442
|
"parameters": [
|
|
25636
26443
|
{
|
|
25637
26444
|
"description": "",
|
|
@@ -25686,7 +26493,7 @@
|
|
|
25686
26493
|
"patch": {
|
|
25687
26494
|
"callbacks": {},
|
|
25688
26495
|
"description": "Perfil por-organización: nombre visible, puesto, avatar y estado. Editar el propio siempre se permite; el de otro miembro requiere `organization_memberships:update`.",
|
|
25689
|
-
"operationId": "
|
|
26496
|
+
"operationId": "patch /v1/organizations/{organization_id}/organization_memberships/{id}",
|
|
25690
26497
|
"parameters": [
|
|
25691
26498
|
{
|
|
25692
26499
|
"description": "",
|
|
@@ -25762,7 +26569,7 @@
|
|
|
25762
26569
|
"put": {
|
|
25763
26570
|
"callbacks": {},
|
|
25764
26571
|
"description": "Perfil por-organización: nombre visible, puesto, avatar y estado. Editar el propio siempre se permite; el de otro miembro requiere `organization_memberships:update`.",
|
|
25765
|
-
"operationId": "
|
|
26572
|
+
"operationId": "put /v1/organizations/{organization_id}/organization_memberships/{id}",
|
|
25766
26573
|
"parameters": [
|
|
25767
26574
|
{
|
|
25768
26575
|
"description": "",
|
|
@@ -25840,7 +26647,7 @@
|
|
|
25840
26647
|
"put": {
|
|
25841
26648
|
"callbacks": {},
|
|
25842
26649
|
"description": "Acción de administración (requiere `organization_memberships:update`). Semántica PUT: la membresía queda con exactamente los roles indicados. Los ids de rol de otra organización se ignoran.",
|
|
25843
|
-
"operationId": "
|
|
26650
|
+
"operationId": "put /v1/organizations/{organization_id}/organization_memberships/{membership_id}/roles",
|
|
25844
26651
|
"parameters": [
|
|
25845
26652
|
{
|
|
25846
26653
|
"description": "",
|
|
@@ -25917,7 +26724,7 @@
|
|
|
25917
26724
|
"/v1/organizations/{organization_id}/payments": {
|
|
25918
26725
|
"get": {
|
|
25919
26726
|
"callbacks": {},
|
|
25920
|
-
"operationId": "
|
|
26727
|
+
"operationId": "get /v1/organizations/{organization_id}/payments",
|
|
25921
26728
|
"parameters": [
|
|
25922
26729
|
{
|
|
25923
26730
|
"description": "",
|
|
@@ -25961,7 +26768,7 @@
|
|
|
25961
26768
|
},
|
|
25962
26769
|
"post": {
|
|
25963
26770
|
"callbacks": {},
|
|
25964
|
-
"operationId": "
|
|
26771
|
+
"operationId": "post /v1/organizations/{organization_id}/payments",
|
|
25965
26772
|
"parameters": [
|
|
25966
26773
|
{
|
|
25967
26774
|
"description": "",
|
|
@@ -26028,7 +26835,7 @@
|
|
|
26028
26835
|
"/v1/organizations/{organization_id}/payments/{id}": {
|
|
26029
26836
|
"get": {
|
|
26030
26837
|
"callbacks": {},
|
|
26031
|
-
"operationId": "
|
|
26838
|
+
"operationId": "get /v1/organizations/{organization_id}/payments/{id}",
|
|
26032
26839
|
"parameters": [
|
|
26033
26840
|
{
|
|
26034
26841
|
"description": "",
|
|
@@ -26084,7 +26891,7 @@
|
|
|
26084
26891
|
"/v1/organizations/{organization_id}/payments/{id}/attach": {
|
|
26085
26892
|
"post": {
|
|
26086
26893
|
"callbacks": {},
|
|
26087
|
-
"operationId": "
|
|
26894
|
+
"operationId": "post /v1/organizations/{organization_id}/payments/{id}/attach",
|
|
26088
26895
|
"parameters": [
|
|
26089
26896
|
{
|
|
26090
26897
|
"description": "",
|
|
@@ -26151,7 +26958,7 @@
|
|
|
26151
26958
|
"/v1/organizations/{organization_id}/payments/{id}/cancel": {
|
|
26152
26959
|
"post": {
|
|
26153
26960
|
"callbacks": {},
|
|
26154
|
-
"operationId": "
|
|
26961
|
+
"operationId": "post /v1/organizations/{organization_id}/payments/{id}/cancel",
|
|
26155
26962
|
"parameters": [
|
|
26156
26963
|
{
|
|
26157
26964
|
"description": "",
|
|
@@ -26207,7 +27014,7 @@
|
|
|
26207
27014
|
"/v1/organizations/{organization_id}/payments/{id}/succeed": {
|
|
26208
27015
|
"post": {
|
|
26209
27016
|
"callbacks": {},
|
|
26210
|
-
"operationId": "
|
|
27017
|
+
"operationId": "post /v1/organizations/{organization_id}/payments/{id}/succeed",
|
|
26211
27018
|
"parameters": [
|
|
26212
27019
|
{
|
|
26213
27020
|
"description": "",
|
|
@@ -26264,7 +27071,7 @@
|
|
|
26264
27071
|
"get": {
|
|
26265
27072
|
"callbacks": {},
|
|
26266
27073
|
"description": "El conjunto completo de permisos posibles (`recurso:accion`) que puede tener un rol. Lo consume el editor de roles para pintar cada toggle on/off.",
|
|
26267
|
-
"operationId": "
|
|
27074
|
+
"operationId": "get /v1/organizations/{organization_id}/permissions",
|
|
26268
27075
|
"parameters": [
|
|
26269
27076
|
{
|
|
26270
27077
|
"description": "",
|
|
@@ -26309,7 +27116,7 @@
|
|
|
26309
27116
|
"/v1/organizations/{organization_id}/policies": {
|
|
26310
27117
|
"get": {
|
|
26311
27118
|
"callbacks": {},
|
|
26312
|
-
"operationId": "
|
|
27119
|
+
"operationId": "get /v1/organizations/{organization_id}/policies",
|
|
26313
27120
|
"parameters": [
|
|
26314
27121
|
{
|
|
26315
27122
|
"description": "",
|
|
@@ -26352,7 +27159,7 @@
|
|
|
26352
27159
|
},
|
|
26353
27160
|
"post": {
|
|
26354
27161
|
"callbacks": {},
|
|
26355
|
-
"operationId": "
|
|
27162
|
+
"operationId": "post /v1/organizations/{organization_id}/policies",
|
|
26356
27163
|
"parameters": [
|
|
26357
27164
|
{
|
|
26358
27165
|
"description": "",
|
|
@@ -26418,7 +27225,7 @@
|
|
|
26418
27225
|
"/v1/organizations/{organization_id}/policies/{id}": {
|
|
26419
27226
|
"delete": {
|
|
26420
27227
|
"callbacks": {},
|
|
26421
|
-
"operationId": "
|
|
27228
|
+
"operationId": "delete /v1/organizations/{organization_id}/policies/{id}",
|
|
26422
27229
|
"parameters": [
|
|
26423
27230
|
{
|
|
26424
27231
|
"description": "",
|
|
@@ -26465,7 +27272,7 @@
|
|
|
26465
27272
|
},
|
|
26466
27273
|
"get": {
|
|
26467
27274
|
"callbacks": {},
|
|
26468
|
-
"operationId": "
|
|
27275
|
+
"operationId": "get /v1/organizations/{organization_id}/policies/{id}",
|
|
26469
27276
|
"parameters": [
|
|
26470
27277
|
{
|
|
26471
27278
|
"description": "",
|
|
@@ -26519,7 +27326,7 @@
|
|
|
26519
27326
|
},
|
|
26520
27327
|
"patch": {
|
|
26521
27328
|
"callbacks": {},
|
|
26522
|
-
"operationId": "
|
|
27329
|
+
"operationId": "patch /v1/organizations/{organization_id}/policies/{id}",
|
|
26523
27330
|
"parameters": [
|
|
26524
27331
|
{
|
|
26525
27332
|
"description": "",
|
|
@@ -26584,7 +27391,7 @@
|
|
|
26584
27391
|
},
|
|
26585
27392
|
"put": {
|
|
26586
27393
|
"callbacks": {},
|
|
26587
|
-
"operationId": "
|
|
27394
|
+
"operationId": "put /v1/organizations/{organization_id}/policies/{id}",
|
|
26588
27395
|
"parameters": [
|
|
26589
27396
|
{
|
|
26590
27397
|
"description": "",
|
|
@@ -26652,7 +27459,7 @@
|
|
|
26652
27459
|
"post": {
|
|
26653
27460
|
"callbacks": {},
|
|
26654
27461
|
"description": "Compila una consulta lógica (object/select/where/include/semantic/order_by) a SQL con permisos inyectados y devuelve las filas mapeadas a slugs. Único camino de lectura rica.",
|
|
26655
|
-
"operationId": "
|
|
27462
|
+
"operationId": "post /v1/organizations/{organization_id}/query",
|
|
26656
27463
|
"parameters": [
|
|
26657
27464
|
{
|
|
26658
27465
|
"description": "",
|
|
@@ -26728,7 +27535,7 @@
|
|
|
26728
27535
|
"/v1/organizations/{organization_id}/relationships": {
|
|
26729
27536
|
"get": {
|
|
26730
27537
|
"callbacks": {},
|
|
26731
|
-
"operationId": "
|
|
27538
|
+
"operationId": "get /v1/organizations/{organization_id}/relationships",
|
|
26732
27539
|
"parameters": [
|
|
26733
27540
|
{
|
|
26734
27541
|
"description": "",
|
|
@@ -26761,7 +27568,7 @@
|
|
|
26761
27568
|
},
|
|
26762
27569
|
"post": {
|
|
26763
27570
|
"callbacks": {},
|
|
26764
|
-
"operationId": "
|
|
27571
|
+
"operationId": "post /v1/organizations/{organization_id}/relationships",
|
|
26765
27572
|
"parameters": [
|
|
26766
27573
|
{
|
|
26767
27574
|
"description": "",
|
|
@@ -26817,7 +27624,7 @@
|
|
|
26817
27624
|
"/v1/organizations/{organization_id}/relationships/{id}": {
|
|
26818
27625
|
"get": {
|
|
26819
27626
|
"callbacks": {},
|
|
26820
|
-
"operationId": "
|
|
27627
|
+
"operationId": "get /v1/organizations/{organization_id}/relationships/{id}",
|
|
26821
27628
|
"parameters": [
|
|
26822
27629
|
{
|
|
26823
27630
|
"description": "",
|
|
@@ -26873,7 +27680,7 @@
|
|
|
26873
27680
|
"/v1/organizations/{organization_id}/roles": {
|
|
26874
27681
|
"get": {
|
|
26875
27682
|
"callbacks": {},
|
|
26876
|
-
"operationId": "
|
|
27683
|
+
"operationId": "get /v1/organizations/{organization_id}/roles",
|
|
26877
27684
|
"parameters": [
|
|
26878
27685
|
{
|
|
26879
27686
|
"description": "",
|
|
@@ -26916,7 +27723,7 @@
|
|
|
26916
27723
|
},
|
|
26917
27724
|
"post": {
|
|
26918
27725
|
"callbacks": {},
|
|
26919
|
-
"operationId": "
|
|
27726
|
+
"operationId": "post /v1/organizations/{organization_id}/roles",
|
|
26920
27727
|
"parameters": [
|
|
26921
27728
|
{
|
|
26922
27729
|
"description": "",
|
|
@@ -26982,7 +27789,7 @@
|
|
|
26982
27789
|
"/v1/organizations/{organization_id}/roles/{id}": {
|
|
26983
27790
|
"delete": {
|
|
26984
27791
|
"callbacks": {},
|
|
26985
|
-
"operationId": "
|
|
27792
|
+
"operationId": "delete /v1/organizations/{organization_id}/roles/{id}",
|
|
26986
27793
|
"parameters": [
|
|
26987
27794
|
{
|
|
26988
27795
|
"description": "",
|
|
@@ -27029,7 +27836,7 @@
|
|
|
27029
27836
|
},
|
|
27030
27837
|
"get": {
|
|
27031
27838
|
"callbacks": {},
|
|
27032
|
-
"operationId": "
|
|
27839
|
+
"operationId": "get /v1/organizations/{organization_id}/roles/{id}",
|
|
27033
27840
|
"parameters": [
|
|
27034
27841
|
{
|
|
27035
27842
|
"description": "",
|
|
@@ -27083,7 +27890,7 @@
|
|
|
27083
27890
|
},
|
|
27084
27891
|
"patch": {
|
|
27085
27892
|
"callbacks": {},
|
|
27086
|
-
"operationId": "
|
|
27893
|
+
"operationId": "patch /v1/organizations/{organization_id}/roles/{id}",
|
|
27087
27894
|
"parameters": [
|
|
27088
27895
|
{
|
|
27089
27896
|
"description": "",
|
|
@@ -27148,7 +27955,7 @@
|
|
|
27148
27955
|
},
|
|
27149
27956
|
"put": {
|
|
27150
27957
|
"callbacks": {},
|
|
27151
|
-
"operationId": "
|
|
27958
|
+
"operationId": "put /v1/organizations/{organization_id}/roles/{id}",
|
|
27152
27959
|
"parameters": [
|
|
27153
27960
|
{
|
|
27154
27961
|
"description": "",
|
|
@@ -27215,7 +28022,7 @@
|
|
|
27215
28022
|
"/v1/organizations/{organization_id}/schedules": {
|
|
27216
28023
|
"get": {
|
|
27217
28024
|
"callbacks": {},
|
|
27218
|
-
"operationId": "
|
|
28025
|
+
"operationId": "get /v1/organizations/{organization_id}/schedules",
|
|
27219
28026
|
"parameters": [
|
|
27220
28027
|
{
|
|
27221
28028
|
"description": "",
|
|
@@ -27258,7 +28065,7 @@
|
|
|
27258
28065
|
},
|
|
27259
28066
|
"post": {
|
|
27260
28067
|
"callbacks": {},
|
|
27261
|
-
"operationId": "
|
|
28068
|
+
"operationId": "post /v1/organizations/{organization_id}/schedules",
|
|
27262
28069
|
"parameters": [
|
|
27263
28070
|
{
|
|
27264
28071
|
"description": "",
|
|
@@ -27314,7 +28121,7 @@
|
|
|
27314
28121
|
"/v1/organizations/{organization_id}/schedules/{id}": {
|
|
27315
28122
|
"delete": {
|
|
27316
28123
|
"callbacks": {},
|
|
27317
|
-
"operationId": "
|
|
28124
|
+
"operationId": "delete /v1/organizations/{organization_id}/schedules/{id}",
|
|
27318
28125
|
"parameters": [
|
|
27319
28126
|
{
|
|
27320
28127
|
"description": "",
|
|
@@ -27351,7 +28158,7 @@
|
|
|
27351
28158
|
},
|
|
27352
28159
|
"get": {
|
|
27353
28160
|
"callbacks": {},
|
|
27354
|
-
"operationId": "
|
|
28161
|
+
"operationId": "get /v1/organizations/{organization_id}/schedules/{id}",
|
|
27355
28162
|
"parameters": [
|
|
27356
28163
|
{
|
|
27357
28164
|
"description": "",
|
|
@@ -27405,7 +28212,7 @@
|
|
|
27405
28212
|
},
|
|
27406
28213
|
"patch": {
|
|
27407
28214
|
"callbacks": {},
|
|
27408
|
-
"operationId": "
|
|
28215
|
+
"operationId": "patch /v1/organizations/{organization_id}/schedules/{id}",
|
|
27409
28216
|
"parameters": [
|
|
27410
28217
|
{
|
|
27411
28218
|
"description": "",
|
|
@@ -27470,7 +28277,7 @@
|
|
|
27470
28277
|
},
|
|
27471
28278
|
"put": {
|
|
27472
28279
|
"callbacks": {},
|
|
27473
|
-
"operationId": "
|
|
28280
|
+
"operationId": "put /v1/organizations/{organization_id}/schedules/{id}",
|
|
27474
28281
|
"parameters": [
|
|
27475
28282
|
{
|
|
27476
28283
|
"description": "",
|
|
@@ -27537,7 +28344,7 @@
|
|
|
27537
28344
|
"/v1/organizations/{organization_id}/schedules/{schedule_id}/availabilities": {
|
|
27538
28345
|
"post": {
|
|
27539
28346
|
"callbacks": {},
|
|
27540
|
-
"operationId": "
|
|
28347
|
+
"operationId": "post /v1/organizations/{organization_id}/schedules/{schedule_id}/availabilities",
|
|
27541
28348
|
"parameters": [
|
|
27542
28349
|
{
|
|
27543
28350
|
"description": "",
|
|
@@ -27604,7 +28411,7 @@
|
|
|
27604
28411
|
"/v1/organizations/{organization_id}/schedules/{schedule_id}/availabilities/{id}": {
|
|
27605
28412
|
"delete": {
|
|
27606
28413
|
"callbacks": {},
|
|
27607
|
-
"operationId": "
|
|
28414
|
+
"operationId": "delete /v1/organizations/{organization_id}/schedules/{schedule_id}/availabilities/{id}",
|
|
27608
28415
|
"parameters": [
|
|
27609
28416
|
{
|
|
27610
28417
|
"description": "",
|
|
@@ -27654,7 +28461,7 @@
|
|
|
27654
28461
|
"/v1/organizations/{organization_id}/stock-movements": {
|
|
27655
28462
|
"get": {
|
|
27656
28463
|
"callbacks": {},
|
|
27657
|
-
"operationId": "
|
|
28464
|
+
"operationId": "get /v1/organizations/{organization_id}/stock-movements",
|
|
27658
28465
|
"parameters": [
|
|
27659
28466
|
{
|
|
27660
28467
|
"description": "",
|
|
@@ -27731,7 +28538,7 @@
|
|
|
27731
28538
|
},
|
|
27732
28539
|
"post": {
|
|
27733
28540
|
"callbacks": {},
|
|
27734
|
-
"operationId": "
|
|
28541
|
+
"operationId": "post /v1/organizations/{organization_id}/stock-movements",
|
|
27735
28542
|
"parameters": [
|
|
27736
28543
|
{
|
|
27737
28544
|
"description": "",
|
|
@@ -27798,7 +28605,7 @@
|
|
|
27798
28605
|
"/v1/organizations/{organization_id}/stock-movements/adjust": {
|
|
27799
28606
|
"post": {
|
|
27800
28607
|
"callbacks": {},
|
|
27801
|
-
"operationId": "
|
|
28608
|
+
"operationId": "post /v1/organizations/{organization_id}/stock-movements/adjust",
|
|
27802
28609
|
"parameters": [
|
|
27803
28610
|
{
|
|
27804
28611
|
"description": "",
|
|
@@ -27854,7 +28661,7 @@
|
|
|
27854
28661
|
"/v1/organizations/{organization_id}/stock-movements/levels": {
|
|
27855
28662
|
"get": {
|
|
27856
28663
|
"callbacks": {},
|
|
27857
|
-
"operationId": "
|
|
28664
|
+
"operationId": "get /v1/organizations/{organization_id}/stock-movements/levels",
|
|
27858
28665
|
"parameters": [
|
|
27859
28666
|
{
|
|
27860
28667
|
"description": "",
|
|
@@ -27900,7 +28707,7 @@
|
|
|
27900
28707
|
"/v1/organizations/{organization_id}/stock-movements/{id}": {
|
|
27901
28708
|
"get": {
|
|
27902
28709
|
"callbacks": {},
|
|
27903
|
-
"operationId": "
|
|
28710
|
+
"operationId": "get /v1/organizations/{organization_id}/stock-movements/{id}",
|
|
27904
28711
|
"parameters": [
|
|
27905
28712
|
{
|
|
27906
28713
|
"description": "",
|
|
@@ -27957,7 +28764,7 @@
|
|
|
27957
28764
|
"post": {
|
|
27958
28765
|
"callbacks": {},
|
|
27959
28766
|
"description": "Devuelve un sobre auto-descriptivo para subir un archivo directo al object storage. Según `method`: `POST` → form multipart con `fields` + el archivo como campo `file` (S3/R2 POST policy, con tope de tamaño firmado en el borde); `PUT` → PUT del blob a `url` con `headers` (adaptador local de dev). Luego se referencia `fileUrl`. (El camino personal usa `HablalaApiWeb.Me.UploadController` en `/v1/me/uploads/presign`.)",
|
|
27960
|
-
"operationId": "
|
|
28767
|
+
"operationId": "post /v1/organizations/{organization_id}/uploads/presign",
|
|
27961
28768
|
"parameters": [
|
|
27962
28769
|
{
|
|
27963
28770
|
"description": "",
|
|
@@ -28014,7 +28821,7 @@
|
|
|
28014
28821
|
"get": {
|
|
28015
28822
|
"callbacks": {},
|
|
28016
28823
|
"description": "Los webhook endpoints de la organización (solo metadatos; el signing secret se obtiene con `GET .../:id/secret`).",
|
|
28017
|
-
"operationId": "
|
|
28824
|
+
"operationId": "get /v1/organizations/{organization_id}/webhooks",
|
|
28018
28825
|
"parameters": [
|
|
28019
28826
|
{
|
|
28020
28827
|
"description": "",
|
|
@@ -28048,7 +28855,7 @@
|
|
|
28048
28855
|
"post": {
|
|
28049
28856
|
"callbacks": {},
|
|
28050
28857
|
"description": "Suscribe una URL a eventos del event store. La plataforma genera el **signing secret** (`whsec_…`) y lo incluye en esta respuesta (`secret`); con él el receptor verifica la firma de cada entrega (spec Standard Webhooks). También puede recuperarse después con `GET .../:id/secret`.",
|
|
28051
|
-
"operationId": "
|
|
28858
|
+
"operationId": "post /v1/organizations/{organization_id}/webhooks",
|
|
28052
28859
|
"parameters": [
|
|
28053
28860
|
{
|
|
28054
28861
|
"description": "",
|
|
@@ -28115,7 +28922,7 @@
|
|
|
28115
28922
|
"delete": {
|
|
28116
28923
|
"callbacks": {},
|
|
28117
28924
|
"description": "Elimina el endpoint y su historial de deliveries. Deja de recibir entregas.",
|
|
28118
|
-
"operationId": "
|
|
28925
|
+
"operationId": "delete /v1/organizations/{organization_id}/webhooks/{id}",
|
|
28119
28926
|
"parameters": [
|
|
28120
28927
|
{
|
|
28121
28928
|
"description": "",
|
|
@@ -28162,7 +28969,7 @@
|
|
|
28162
28969
|
},
|
|
28163
28970
|
"get": {
|
|
28164
28971
|
"callbacks": {},
|
|
28165
|
-
"operationId": "
|
|
28972
|
+
"operationId": "get /v1/organizations/{organization_id}/webhooks/{id}",
|
|
28166
28973
|
"parameters": [
|
|
28167
28974
|
{
|
|
28168
28975
|
"description": "",
|
|
@@ -28217,7 +29024,7 @@
|
|
|
28217
29024
|
"patch": {
|
|
28218
29025
|
"callbacks": {},
|
|
28219
29026
|
"description": "Cambia `url`/`enabledEvents`/`status`. Reactivar (`status: \"enabled\"`) un endpoint auto-deshabilitado limpia el motivo del disable. El slug y el secret no se tocan aquí.",
|
|
28220
|
-
"operationId": "
|
|
29027
|
+
"operationId": "patch /v1/organizations/{organization_id}/webhooks/{id}",
|
|
28221
29028
|
"parameters": [
|
|
28222
29029
|
{
|
|
28223
29030
|
"description": "",
|
|
@@ -28283,7 +29090,7 @@
|
|
|
28283
29090
|
"put": {
|
|
28284
29091
|
"callbacks": {},
|
|
28285
29092
|
"description": "Cambia `url`/`enabledEvents`/`status`. Reactivar (`status: \"enabled\"`) un endpoint auto-deshabilitado limpia el motivo del disable. El slug y el secret no se tocan aquí.",
|
|
28286
|
-
"operationId": "
|
|
29093
|
+
"operationId": "put /v1/organizations/{organization_id}/webhooks/{id}",
|
|
28287
29094
|
"parameters": [
|
|
28288
29095
|
{
|
|
28289
29096
|
"description": "",
|
|
@@ -28351,7 +29158,7 @@
|
|
|
28351
29158
|
"get": {
|
|
28352
29159
|
"callbacks": {},
|
|
28353
29160
|
"description": "La bitácora de entregas (canónico GitHub): qué eventos se entregaron, cuántos intentos costaron y con qué respondió el receptor. Más recientes primero (máx. 50).",
|
|
28354
|
-
"operationId": "
|
|
29161
|
+
"operationId": "get /v1/organizations/{organization_id}/webhooks/{id}/deliveries",
|
|
28355
29162
|
"parameters": [
|
|
28356
29163
|
{
|
|
28357
29164
|
"description": "",
|
|
@@ -28398,7 +29205,7 @@
|
|
|
28398
29205
|
"post": {
|
|
28399
29206
|
"callbacks": {},
|
|
28400
29207
|
"description": "Genera un `whsec_…` nuevo para el MISMO endpoint (el historial no cambia). El secret viejo deja de firmar de inmediato: actualiza la copia del receptor. La respuesta incluye el nuevo secret.",
|
|
28401
|
-
"operationId": "
|
|
29208
|
+
"operationId": "post /v1/organizations/{organization_id}/webhooks/{id}/rotate",
|
|
28402
29209
|
"parameters": [
|
|
28403
29210
|
{
|
|
28404
29211
|
"description": "",
|
|
@@ -28445,7 +29252,7 @@
|
|
|
28445
29252
|
"get": {
|
|
28446
29253
|
"callbacks": {},
|
|
28447
29254
|
"description": "El `whsec_…` del endpoint, para configurarlo en el receptor (modelo Svix `GET .../secret` / Stripe dashboard \"Reveal\"). Es una llave de firma compartida, no una credencial de autenticación entrante: por eso es recuperable, a diferencia de `sk_`/`mat_`.",
|
|
28448
|
-
"operationId": "
|
|
29255
|
+
"operationId": "get /v1/organizations/{organization_id}/webhooks/{id}/secret",
|
|
28449
29256
|
"parameters": [
|
|
28450
29257
|
{
|
|
28451
29258
|
"description": "",
|
|
@@ -28492,7 +29299,7 @@
|
|
|
28492
29299
|
"get": {
|
|
28493
29300
|
"callbacks": {},
|
|
28494
29301
|
"description": "Corridas de la organización, más recientes primero (máx. 50).",
|
|
28495
|
-
"operationId": "
|
|
29302
|
+
"operationId": "get /v1/organizations/{organization_id}/workflow-executions",
|
|
28496
29303
|
"parameters": [
|
|
28497
29304
|
{
|
|
28498
29305
|
"description": "",
|
|
@@ -28559,7 +29366,7 @@
|
|
|
28559
29366
|
"/v1/organizations/{organization_id}/workflow-executions/{id}": {
|
|
28560
29367
|
"get": {
|
|
28561
29368
|
"callbacks": {},
|
|
28562
|
-
"operationId": "
|
|
29369
|
+
"operationId": "get /v1/organizations/{organization_id}/workflow-executions/{id}",
|
|
28563
29370
|
"parameters": [
|
|
28564
29371
|
{
|
|
28565
29372
|
"description": "",
|
|
@@ -28616,7 +29423,7 @@
|
|
|
28616
29423
|
"post": {
|
|
28617
29424
|
"callbacks": {},
|
|
28618
29425
|
"description": "Entrega una señal externa a una ejecución detenida en un estado de espera (patrón human task, ADR-017). Requiere `workflows:signal`; si el estado de espera declara la tarea (`task_key`), además se evalúa la policy ABAC `signal` sobre ese record. La ejecución avanza de forma asíncrona: la respuesta confirma la entrega del signal.",
|
|
28619
|
-
"operationId": "
|
|
29426
|
+
"operationId": "post /v1/organizations/{organization_id}/workflow-executions/{id}/signals",
|
|
28620
29427
|
"parameters": [
|
|
28621
29428
|
{
|
|
28622
29429
|
"description": "",
|
|
@@ -28714,7 +29521,7 @@
|
|
|
28714
29521
|
"get": {
|
|
28715
29522
|
"callbacks": {},
|
|
28716
29523
|
"description": "Todas las definiciones de la organización (incluye archivadas).",
|
|
28717
|
-
"operationId": "
|
|
29524
|
+
"operationId": "get /v1/organizations/{organization_id}/workflows",
|
|
28718
29525
|
"parameters": [
|
|
28719
29526
|
{
|
|
28720
29527
|
"description": "",
|
|
@@ -28757,7 +29564,7 @@
|
|
|
28757
29564
|
},
|
|
28758
29565
|
"post": {
|
|
28759
29566
|
"callbacks": {},
|
|
28760
|
-
"operationId": "
|
|
29567
|
+
"operationId": "post /v1/organizations/{organization_id}/workflows",
|
|
28761
29568
|
"parameters": [
|
|
28762
29569
|
{
|
|
28763
29570
|
"description": "",
|
|
@@ -28824,7 +29631,7 @@
|
|
|
28824
29631
|
"delete": {
|
|
28825
29632
|
"callbacks": {},
|
|
28826
29633
|
"description": "Soft-delete: marca la definición como archivada. Deja de disparar triggers nuevos; sus ejecuciones históricas se conservan.",
|
|
28827
|
-
"operationId": "
|
|
29634
|
+
"operationId": "delete /v1/organizations/{organization_id}/workflows/{id}",
|
|
28828
29635
|
"parameters": [
|
|
28829
29636
|
{
|
|
28830
29637
|
"description": "",
|
|
@@ -28871,7 +29678,7 @@
|
|
|
28871
29678
|
},
|
|
28872
29679
|
"get": {
|
|
28873
29680
|
"callbacks": {},
|
|
28874
|
-
"operationId": "
|
|
29681
|
+
"operationId": "get /v1/organizations/{organization_id}/workflows/{id}",
|
|
28875
29682
|
"parameters": [
|
|
28876
29683
|
{
|
|
28877
29684
|
"description": "",
|
|
@@ -28925,7 +29732,7 @@
|
|
|
28925
29732
|
},
|
|
28926
29733
|
"patch": {
|
|
28927
29734
|
"callbacks": {},
|
|
28928
|
-
"operationId": "
|
|
29735
|
+
"operationId": "patch /v1/organizations/{organization_id}/workflows/{id}",
|
|
28929
29736
|
"parameters": [
|
|
28930
29737
|
{
|
|
28931
29738
|
"description": "",
|
|
@@ -28990,7 +29797,7 @@
|
|
|
28990
29797
|
},
|
|
28991
29798
|
"put": {
|
|
28992
29799
|
"callbacks": {},
|
|
28993
|
-
"operationId": "
|
|
29800
|
+
"operationId": "put /v1/organizations/{organization_id}/workflows/{id}",
|
|
28994
29801
|
"parameters": [
|
|
28995
29802
|
{
|
|
28996
29803
|
"description": "",
|
|
@@ -29057,7 +29864,7 @@
|
|
|
29057
29864
|
"/v1/policies": {
|
|
29058
29865
|
"get": {
|
|
29059
29866
|
"callbacks": {},
|
|
29060
|
-
"operationId": "
|
|
29867
|
+
"operationId": "get /v1/policies",
|
|
29061
29868
|
"parameters": [],
|
|
29062
29869
|
"responses": {
|
|
29063
29870
|
"200": {
|
|
@@ -29088,7 +29895,7 @@
|
|
|
29088
29895
|
},
|
|
29089
29896
|
"post": {
|
|
29090
29897
|
"callbacks": {},
|
|
29091
|
-
"operationId": "
|
|
29898
|
+
"operationId": "post /v1/policies",
|
|
29092
29899
|
"parameters": [],
|
|
29093
29900
|
"requestBody": {
|
|
29094
29901
|
"content": {
|
|
@@ -29142,7 +29949,7 @@
|
|
|
29142
29949
|
"/v1/policies/{id}": {
|
|
29143
29950
|
"delete": {
|
|
29144
29951
|
"callbacks": {},
|
|
29145
|
-
"operationId": "
|
|
29952
|
+
"operationId": "delete /v1/policies/{id}",
|
|
29146
29953
|
"parameters": [
|
|
29147
29954
|
{
|
|
29148
29955
|
"description": "",
|
|
@@ -29178,7 +29985,7 @@
|
|
|
29178
29985
|
},
|
|
29179
29986
|
"get": {
|
|
29180
29987
|
"callbacks": {},
|
|
29181
|
-
"operationId": "
|
|
29988
|
+
"operationId": "get /v1/policies/{id}",
|
|
29182
29989
|
"parameters": [
|
|
29183
29990
|
{
|
|
29184
29991
|
"description": "",
|
|
@@ -29221,7 +30028,7 @@
|
|
|
29221
30028
|
},
|
|
29222
30029
|
"patch": {
|
|
29223
30030
|
"callbacks": {},
|
|
29224
|
-
"operationId": "
|
|
30031
|
+
"operationId": "patch /v1/policies/{id}",
|
|
29225
30032
|
"parameters": [
|
|
29226
30033
|
{
|
|
29227
30034
|
"description": "",
|
|
@@ -29275,7 +30082,7 @@
|
|
|
29275
30082
|
},
|
|
29276
30083
|
"put": {
|
|
29277
30084
|
"callbacks": {},
|
|
29278
|
-
"operationId": "
|
|
30085
|
+
"operationId": "put /v1/policies/{id}",
|
|
29279
30086
|
"parameters": [
|
|
29280
30087
|
{
|
|
29281
30088
|
"description": "",
|
|
@@ -29328,11 +30135,91 @@
|
|
|
29328
30135
|
]
|
|
29329
30136
|
}
|
|
29330
30137
|
},
|
|
30138
|
+
"/v1/public/aggregate": {
|
|
30139
|
+
"post": {
|
|
30140
|
+
"callbacks": {},
|
|
30141
|
+
"description": "Agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), autenticado por una API key. Bajo el MISMO default-deny que la lectura: solo agrega lo que las policies exponen al principal `public`/`end_user`.",
|
|
30142
|
+
"operationId": "post /v1/public/aggregate",
|
|
30143
|
+
"parameters": [],
|
|
30144
|
+
"requestBody": {
|
|
30145
|
+
"content": {
|
|
30146
|
+
"application/json": {
|
|
30147
|
+
"schema": {
|
|
30148
|
+
"$ref": "#/components/schemas/AggregateQueryRequest"
|
|
30149
|
+
}
|
|
30150
|
+
}
|
|
30151
|
+
},
|
|
30152
|
+
"description": "Aggregation query",
|
|
30153
|
+
"required": false
|
|
30154
|
+
},
|
|
30155
|
+
"responses": {
|
|
30156
|
+
"200": {
|
|
30157
|
+
"content": {
|
|
30158
|
+
"application/json": {
|
|
30159
|
+
"schema": {
|
|
30160
|
+
"$ref": "#/components/schemas/AggregateResultResponse"
|
|
30161
|
+
}
|
|
30162
|
+
}
|
|
30163
|
+
},
|
|
30164
|
+
"description": "Grupos agregados"
|
|
30165
|
+
},
|
|
30166
|
+
"401": {
|
|
30167
|
+
"content": {
|
|
30168
|
+
"application/json": {
|
|
30169
|
+
"schema": {
|
|
30170
|
+
"$ref": "#/components/schemas/Error"
|
|
30171
|
+
}
|
|
30172
|
+
}
|
|
30173
|
+
},
|
|
30174
|
+
"description": "Token inválido"
|
|
30175
|
+
},
|
|
30176
|
+
"403": {
|
|
30177
|
+
"content": {
|
|
30178
|
+
"application/json": {
|
|
30179
|
+
"schema": {
|
|
30180
|
+
"$ref": "#/components/schemas/Error"
|
|
30181
|
+
}
|
|
30182
|
+
}
|
|
30183
|
+
},
|
|
30184
|
+
"description": "Sin permiso"
|
|
30185
|
+
},
|
|
30186
|
+
"404": {
|
|
30187
|
+
"content": {
|
|
30188
|
+
"application/json": {
|
|
30189
|
+
"schema": {
|
|
30190
|
+
"$ref": "#/components/schemas/Error"
|
|
30191
|
+
}
|
|
30192
|
+
}
|
|
30193
|
+
},
|
|
30194
|
+
"description": "Objeto o tenant desconocido"
|
|
30195
|
+
},
|
|
30196
|
+
"422": {
|
|
30197
|
+
"content": {
|
|
30198
|
+
"application/json": {
|
|
30199
|
+
"schema": {
|
|
30200
|
+
"$ref": "#/components/schemas/Error"
|
|
30201
|
+
}
|
|
30202
|
+
}
|
|
30203
|
+
},
|
|
30204
|
+
"description": "Consulta inválida"
|
|
30205
|
+
}
|
|
30206
|
+
},
|
|
30207
|
+
"security": [
|
|
30208
|
+
{
|
|
30209
|
+
"apiKey": []
|
|
30210
|
+
}
|
|
30211
|
+
],
|
|
30212
|
+
"summary": "Agregar por la Data API pública (reportes)",
|
|
30213
|
+
"tags": [
|
|
30214
|
+
"public"
|
|
30215
|
+
]
|
|
30216
|
+
}
|
|
30217
|
+
},
|
|
29331
30218
|
"/v1/public/end-users": {
|
|
29332
30219
|
"post": {
|
|
29333
30220
|
"callbacks": {},
|
|
29334
30221
|
"description": "Crea el record `customer` y su credencial de login (email + password), y devuelve un end-user session token (`sess_…`). Si la request trae un end-user session token anónimo, la sesión se identifica (merge del carrito). La organización sale de la API key.",
|
|
29335
|
-
"operationId": "
|
|
30222
|
+
"operationId": "post /v1/public/end-users",
|
|
29336
30223
|
"parameters": [],
|
|
29337
30224
|
"requestBody": {
|
|
29338
30225
|
"content": {
|
|
@@ -29402,7 +30289,7 @@
|
|
|
29402
30289
|
"delete": {
|
|
29403
30290
|
"callbacks": {},
|
|
29404
30291
|
"description": "Revoca el end-user session token de la request. Idempotente.",
|
|
29405
|
-
"operationId": "
|
|
30292
|
+
"operationId": "delete /v1/public/end-users/session",
|
|
29406
30293
|
"parameters": [],
|
|
29407
30294
|
"responses": {
|
|
29408
30295
|
"204": {
|
|
@@ -29422,7 +30309,7 @@
|
|
|
29422
30309
|
"post": {
|
|
29423
30310
|
"callbacks": {},
|
|
29424
30311
|
"description": "Verifica email + password y devuelve un end-user session token (`sess_…`). Si la request trae un end-user session token anónimo, la sesión se identifica (merge). La organización sale de la API key.",
|
|
29425
|
-
"operationId": "
|
|
30312
|
+
"operationId": "post /v1/public/end-users/session",
|
|
29426
30313
|
"parameters": [],
|
|
29427
30314
|
"requestBody": {
|
|
29428
30315
|
"content": {
|
|
@@ -29468,11 +30355,91 @@
|
|
|
29468
30355
|
]
|
|
29469
30356
|
}
|
|
29470
30357
|
},
|
|
30358
|
+
"/v1/public/me/aggregate": {
|
|
30359
|
+
"post": {
|
|
30360
|
+
"callbacks": {},
|
|
30361
|
+
"description": "Agrupa records por `dimensions` y calcula `measures` (count/sum/avg/min/max), autenticado por una API key. Bajo el MISMO default-deny que la lectura: solo agrega lo que las policies exponen al principal `public`/`end_user`.",
|
|
30362
|
+
"operationId": "post /v1/public/me/aggregate",
|
|
30363
|
+
"parameters": [],
|
|
30364
|
+
"requestBody": {
|
|
30365
|
+
"content": {
|
|
30366
|
+
"application/json": {
|
|
30367
|
+
"schema": {
|
|
30368
|
+
"$ref": "#/components/schemas/AggregateQueryRequest"
|
|
30369
|
+
}
|
|
30370
|
+
}
|
|
30371
|
+
},
|
|
30372
|
+
"description": "Aggregation query",
|
|
30373
|
+
"required": false
|
|
30374
|
+
},
|
|
30375
|
+
"responses": {
|
|
30376
|
+
"200": {
|
|
30377
|
+
"content": {
|
|
30378
|
+
"application/json": {
|
|
30379
|
+
"schema": {
|
|
30380
|
+
"$ref": "#/components/schemas/AggregateResultResponse"
|
|
30381
|
+
}
|
|
30382
|
+
}
|
|
30383
|
+
},
|
|
30384
|
+
"description": "Grupos agregados"
|
|
30385
|
+
},
|
|
30386
|
+
"401": {
|
|
30387
|
+
"content": {
|
|
30388
|
+
"application/json": {
|
|
30389
|
+
"schema": {
|
|
30390
|
+
"$ref": "#/components/schemas/Error"
|
|
30391
|
+
}
|
|
30392
|
+
}
|
|
30393
|
+
},
|
|
30394
|
+
"description": "Token inválido"
|
|
30395
|
+
},
|
|
30396
|
+
"403": {
|
|
30397
|
+
"content": {
|
|
30398
|
+
"application/json": {
|
|
30399
|
+
"schema": {
|
|
30400
|
+
"$ref": "#/components/schemas/Error"
|
|
30401
|
+
}
|
|
30402
|
+
}
|
|
30403
|
+
},
|
|
30404
|
+
"description": "Sin permiso"
|
|
30405
|
+
},
|
|
30406
|
+
"404": {
|
|
30407
|
+
"content": {
|
|
30408
|
+
"application/json": {
|
|
30409
|
+
"schema": {
|
|
30410
|
+
"$ref": "#/components/schemas/Error"
|
|
30411
|
+
}
|
|
30412
|
+
}
|
|
30413
|
+
},
|
|
30414
|
+
"description": "Objeto o tenant desconocido"
|
|
30415
|
+
},
|
|
30416
|
+
"422": {
|
|
30417
|
+
"content": {
|
|
30418
|
+
"application/json": {
|
|
30419
|
+
"schema": {
|
|
30420
|
+
"$ref": "#/components/schemas/Error"
|
|
30421
|
+
}
|
|
30422
|
+
}
|
|
30423
|
+
},
|
|
30424
|
+
"description": "Consulta inválida"
|
|
30425
|
+
}
|
|
30426
|
+
},
|
|
30427
|
+
"security": [
|
|
30428
|
+
{
|
|
30429
|
+
"apiKey": []
|
|
30430
|
+
}
|
|
30431
|
+
],
|
|
30432
|
+
"summary": "Agregar por la Data API pública (reportes)",
|
|
30433
|
+
"tags": [
|
|
30434
|
+
"public"
|
|
30435
|
+
]
|
|
30436
|
+
}
|
|
30437
|
+
},
|
|
29471
30438
|
"/v1/public/me/checkout": {
|
|
29472
30439
|
"post": {
|
|
29473
30440
|
"callbacks": {},
|
|
29474
30441
|
"description": "Crea un pedido atómicamente: valida stock por variante, numera (#1001), crea el `order` (source = web, financial_status = pending) + sus renglones con snapshots de precio, y decrementa el inventario. Autenticado por end-user session token; el comprador sale de la sesión (no del cuerpo). Idempotente vía el header `Idempotency-Key`.",
|
|
29475
|
-
"operationId": "
|
|
30442
|
+
"operationId": "post /v1/public/me/checkout",
|
|
29476
30443
|
"parameters": [
|
|
29477
30444
|
{
|
|
29478
30445
|
"description": "Clave de idempotencia (estándar Stripe): dos envíos con la misma → un pedido.",
|
|
@@ -29563,7 +30530,7 @@
|
|
|
29563
30530
|
"/v1/public/me/objects/{object_slug}/records": {
|
|
29564
30531
|
"post": {
|
|
29565
30532
|
"callbacks": {},
|
|
29566
|
-
"operationId": "
|
|
30533
|
+
"operationId": "post /v1/public/me/objects/{object_slug}/records",
|
|
29567
30534
|
"parameters": [
|
|
29568
30535
|
{
|
|
29569
30536
|
"description": "",
|
|
@@ -29629,7 +30596,7 @@
|
|
|
29629
30596
|
"/v1/public/me/objects/{object_slug}/records/{id}": {
|
|
29630
30597
|
"delete": {
|
|
29631
30598
|
"callbacks": {},
|
|
29632
|
-
"operationId": "
|
|
30599
|
+
"operationId": "delete /v1/public/me/objects/{object_slug}/records/{id}",
|
|
29633
30600
|
"parameters": [
|
|
29634
30601
|
{
|
|
29635
30602
|
"description": "",
|
|
@@ -29686,7 +30653,7 @@
|
|
|
29686
30653
|
},
|
|
29687
30654
|
"patch": {
|
|
29688
30655
|
"callbacks": {},
|
|
29689
|
-
"operationId": "
|
|
30656
|
+
"operationId": "patch /v1/public/me/objects/{object_slug}/records/{id}",
|
|
29690
30657
|
"parameters": [
|
|
29691
30658
|
{
|
|
29692
30659
|
"description": "",
|
|
@@ -29771,7 +30738,7 @@
|
|
|
29771
30738
|
},
|
|
29772
30739
|
"put": {
|
|
29773
30740
|
"callbacks": {},
|
|
29774
|
-
"operationId": "
|
|
30741
|
+
"operationId": "put /v1/public/me/objects/{object_slug}/records/{id}",
|
|
29775
30742
|
"parameters": [
|
|
29776
30743
|
{
|
|
29777
30744
|
"description": "",
|
|
@@ -29859,7 +30826,7 @@
|
|
|
29859
30826
|
"post": {
|
|
29860
30827
|
"callbacks": {},
|
|
29861
30828
|
"description": "Como el staged upload del canal de máquina (`POST /v1/objects/{object_slug}/uploads`), pero gobernado por el ABAC default-deny del canal público: exige una policy `allow` de `create` o `update` para el principal (`public` con la API key; `end_user` con el session token en la variante `/me`) sobre el object — sin policy, 403. Flujo: presign → `PUT` del blob a `uploadUrl` → confirmar escribiendo el record con `fileUrl` en el envelope del attribute `file`.",
|
|
29862
|
-
"operationId": "
|
|
30829
|
+
"operationId": "post /v1/public/me/objects/{object_slug}/uploads",
|
|
29863
30830
|
"parameters": [
|
|
29864
30831
|
{
|
|
29865
30832
|
"description": "",
|
|
@@ -29936,7 +30903,7 @@
|
|
|
29936
30903
|
"post": {
|
|
29937
30904
|
"callbacks": {},
|
|
29938
30905
|
"description": "Ejecuta una consulta lógica (object/select/where/include/order_by) autenticada por una API key read-only. La organización sale del token (no de la URL). Devuelve solo lo que las policies ABAC exponen al principal `public` (contenido publicado). Único camino de lectura pública.",
|
|
29939
|
-
"operationId": "
|
|
30906
|
+
"operationId": "post /v1/public/me/query",
|
|
29940
30907
|
"parameters": [],
|
|
29941
30908
|
"requestBody": {
|
|
29942
30909
|
"content": {
|
|
@@ -30015,7 +30982,7 @@
|
|
|
30015
30982
|
"/v1/public/objects/{object_slug}/records": {
|
|
30016
30983
|
"post": {
|
|
30017
30984
|
"callbacks": {},
|
|
30018
|
-
"operationId": "
|
|
30985
|
+
"operationId": "post /v1/public/objects/{object_slug}/records",
|
|
30019
30986
|
"parameters": [
|
|
30020
30987
|
{
|
|
30021
30988
|
"description": "",
|
|
@@ -30081,7 +31048,7 @@
|
|
|
30081
31048
|
"/v1/public/objects/{object_slug}/records/{id}": {
|
|
30082
31049
|
"delete": {
|
|
30083
31050
|
"callbacks": {},
|
|
30084
|
-
"operationId": "
|
|
31051
|
+
"operationId": "delete /v1/public/objects/{object_slug}/records/{id}",
|
|
30085
31052
|
"parameters": [
|
|
30086
31053
|
{
|
|
30087
31054
|
"description": "",
|
|
@@ -30138,7 +31105,7 @@
|
|
|
30138
31105
|
},
|
|
30139
31106
|
"patch": {
|
|
30140
31107
|
"callbacks": {},
|
|
30141
|
-
"operationId": "
|
|
31108
|
+
"operationId": "patch /v1/public/objects/{object_slug}/records/{id}",
|
|
30142
31109
|
"parameters": [
|
|
30143
31110
|
{
|
|
30144
31111
|
"description": "",
|
|
@@ -30223,7 +31190,7 @@
|
|
|
30223
31190
|
},
|
|
30224
31191
|
"put": {
|
|
30225
31192
|
"callbacks": {},
|
|
30226
|
-
"operationId": "
|
|
31193
|
+
"operationId": "put /v1/public/objects/{object_slug}/records/{id}",
|
|
30227
31194
|
"parameters": [
|
|
30228
31195
|
{
|
|
30229
31196
|
"description": "",
|
|
@@ -30311,7 +31278,7 @@
|
|
|
30311
31278
|
"post": {
|
|
30312
31279
|
"callbacks": {},
|
|
30313
31280
|
"description": "Como el staged upload del canal de máquina (`POST /v1/objects/{object_slug}/uploads`), pero gobernado por el ABAC default-deny del canal público: exige una policy `allow` de `create` o `update` para el principal (`public` con la API key; `end_user` con el session token en la variante `/me`) sobre el object — sin policy, 403. Flujo: presign → `PUT` del blob a `uploadUrl` → confirmar escribiendo el record con `fileUrl` en el envelope del attribute `file`.",
|
|
30314
|
-
"operationId": "
|
|
31281
|
+
"operationId": "post /v1/public/objects/{object_slug}/uploads",
|
|
30315
31282
|
"parameters": [
|
|
30316
31283
|
{
|
|
30317
31284
|
"description": "",
|
|
@@ -30388,7 +31355,7 @@
|
|
|
30388
31355
|
"post": {
|
|
30389
31356
|
"callbacks": {},
|
|
30390
31357
|
"description": "Ejecuta una consulta lógica (object/select/where/include/order_by) autenticada por una API key read-only. La organización sale del token (no de la URL). Devuelve solo lo que las policies ABAC exponen al principal `public` (contenido publicado). Único camino de lectura pública.",
|
|
30391
|
-
"operationId": "
|
|
31358
|
+
"operationId": "post /v1/public/query",
|
|
30392
31359
|
"parameters": [],
|
|
30393
31360
|
"requestBody": {
|
|
30394
31361
|
"content": {
|
|
@@ -30468,7 +31435,7 @@
|
|
|
30468
31435
|
"get": {
|
|
30469
31436
|
"callbacks": {},
|
|
30470
31437
|
"description": "Devuelve la forma del diccionario del tenant (objetos + atributos + relaciones) para que el SDK genere tipos TS por tenant (`hablala codegen`). La organización sale del token (no de la URL). Read-only; nunca datos de records.",
|
|
30471
|
-
"operationId": "
|
|
31438
|
+
"operationId": "get /v1/public/schema",
|
|
30472
31439
|
"parameters": [],
|
|
30473
31440
|
"responses": {
|
|
30474
31441
|
"200": {
|
|
@@ -30507,7 +31474,7 @@
|
|
|
30507
31474
|
"post": {
|
|
30508
31475
|
"callbacks": {},
|
|
30509
31476
|
"description": "Devuelve un end-user session token anónimo (`sess_…`, sin usuario final): el carrito/actividad antes de identificarse. Al hacer login/signup con este token, la sesión se identifica (merge). La organización sale de la API key.",
|
|
30510
|
-
"operationId": "
|
|
31477
|
+
"operationId": "post /v1/public/sessions/anonymous",
|
|
30511
31478
|
"parameters": [],
|
|
30512
31479
|
"responses": {
|
|
30513
31480
|
"201": {
|
|
@@ -30546,7 +31513,7 @@
|
|
|
30546
31513
|
"post": {
|
|
30547
31514
|
"callbacks": {},
|
|
30548
31515
|
"description": "Dado un lote de ids de `product_variant`, devuelve por variante si es comprable (activa y con stock > 0) — el booleano del badge \"Agotado\". Autenticado por API key. Se expone el booleano derivado, no el conteo de stock.",
|
|
30549
|
-
"operationId": "
|
|
31516
|
+
"operationId": "post /v1/public/variants/availability",
|
|
30550
31517
|
"parameters": [],
|
|
30551
31518
|
"requestBody": {
|
|
30552
31519
|
"content": {
|
|
@@ -30606,7 +31573,7 @@
|
|
|
30606
31573
|
"post": {
|
|
30607
31574
|
"callbacks": {},
|
|
30608
31575
|
"description": "Registra (upsert) el token de push de este dispositivo para el usuario autenticado. Idempotente por `token`: re-registrar en cada arranque es correcto y revive un token que se había dado de baja.",
|
|
30609
|
-
"operationId": "
|
|
31576
|
+
"operationId": "post /v1/push-tokens",
|
|
30610
31577
|
"parameters": [],
|
|
30611
31578
|
"requestBody": {
|
|
30612
31579
|
"content": {
|
|
@@ -30651,7 +31618,7 @@
|
|
|
30651
31618
|
"delete": {
|
|
30652
31619
|
"callbacks": {},
|
|
30653
31620
|
"description": "Borra el device token de este dispositivo (logout): el dispositivo deja de recibir push de esta cuenta. Idempotente (204 aunque el token ya no existiera).",
|
|
30654
|
-
"operationId": "
|
|
31621
|
+
"operationId": "delete /v1/push-tokens/{token}",
|
|
30655
31622
|
"parameters": [
|
|
30656
31623
|
{
|
|
30657
31624
|
"description": "El device token a eliminar.",
|
|
@@ -30680,7 +31647,7 @@
|
|
|
30680
31647
|
"post": {
|
|
30681
31648
|
"callbacks": {},
|
|
30682
31649
|
"description": "Compila una consulta lógica (object/select/where/include/semantic/order_by) a SQL con permisos inyectados y devuelve las filas mapeadas a slugs. Único camino de lectura rica.",
|
|
30683
|
-
"operationId": "
|
|
31650
|
+
"operationId": "post /v1/query",
|
|
30684
31651
|
"parameters": [],
|
|
30685
31652
|
"requestBody": {
|
|
30686
31653
|
"content": {
|
|
@@ -30744,7 +31711,7 @@
|
|
|
30744
31711
|
"/v1/relationships": {
|
|
30745
31712
|
"get": {
|
|
30746
31713
|
"callbacks": {},
|
|
30747
|
-
"operationId": "
|
|
31714
|
+
"operationId": "get /v1/relationships",
|
|
30748
31715
|
"parameters": [],
|
|
30749
31716
|
"responses": {
|
|
30750
31717
|
"200": {
|
|
@@ -30765,7 +31732,7 @@
|
|
|
30765
31732
|
},
|
|
30766
31733
|
"post": {
|
|
30767
31734
|
"callbacks": {},
|
|
30768
|
-
"operationId": "
|
|
31735
|
+
"operationId": "post /v1/relationships",
|
|
30769
31736
|
"parameters": [],
|
|
30770
31737
|
"requestBody": {
|
|
30771
31738
|
"content": {
|
|
@@ -30809,7 +31776,7 @@
|
|
|
30809
31776
|
"/v1/relationships/{id}": {
|
|
30810
31777
|
"get": {
|
|
30811
31778
|
"callbacks": {},
|
|
30812
|
-
"operationId": "
|
|
31779
|
+
"operationId": "get /v1/relationships/{id}",
|
|
30813
31780
|
"parameters": [
|
|
30814
31781
|
{
|
|
30815
31782
|
"description": "",
|
|
@@ -30855,7 +31822,7 @@
|
|
|
30855
31822
|
"post": {
|
|
30856
31823
|
"callbacks": {},
|
|
30857
31824
|
"description": "Recibe la aserción del IdP (ya validada en el borde), resuelve o crea la identidad global del usuario, asegura su membresía en la organización y devuelve un token de API. El IdP solo CONFIRMA pertenencia; no reemplaza la identidad (el `user_id` global se preserva).",
|
|
30858
|
-
"operationId": "
|
|
31825
|
+
"operationId": "post /v1/sso/callback",
|
|
30859
31826
|
"parameters": [],
|
|
30860
31827
|
"requestBody": {
|
|
30861
31828
|
"content": {
|
|
@@ -30901,7 +31868,7 @@
|
|
|
30901
31868
|
"post": {
|
|
30902
31869
|
"callbacks": {},
|
|
30903
31870
|
"description": "Dado un email corporativo, resuelve la conexión SSO de su organización por el dominio y devuelve la URL del IdP a la que redirigir (flujo SP-initiated). Responde 404 si el dominio no tiene una conexión SSO habilitada (el frontend cae al login por contraseña).",
|
|
30904
|
-
"operationId": "
|
|
31871
|
+
"operationId": "post /v1/sso/init",
|
|
30905
31872
|
"parameters": [],
|
|
30906
31873
|
"requestBody": {
|
|
30907
31874
|
"content": {
|
|
@@ -30947,7 +31914,7 @@
|
|
|
30947
31914
|
"post": {
|
|
30948
31915
|
"callbacks": {},
|
|
30949
31916
|
"description": "Inicia sesión con Google. Crea la cuenta si no existe o vincula Google a la cuenta con el mismo email (Google verifica el email, así que la cuenta queda confirmada).\n\nSoporta dos clientes según el campo que envíes:\n\n- **Nativo (app móvil):** envía `idToken` (el `id_token` OIDC del SDK `google_sign_in`). El backend lo **verifica** (firma JWKS de Google, `aud`, `iss`, `exp`) sin canjear nada. Es el flujo estándar de \"sign-in only\".\n- **Web (BFF con redirección server-side):** envía `code` + `redirectUri` (el mismo valor usado para pedir el `code`); se valida contra una allow-list server-side.",
|
|
30950
|
-
"operationId": "
|
|
31917
|
+
"operationId": "post /v1/users/auth/google",
|
|
30951
31918
|
"parameters": [],
|
|
30952
31919
|
"requestBody": {
|
|
30953
31920
|
"content": {
|
|
@@ -30993,7 +31960,7 @@
|
|
|
30993
31960
|
"post": {
|
|
30994
31961
|
"callbacks": {},
|
|
30995
31962
|
"description": "Completa la vinculación de Google a una cuenta existente que tiene contraseña (paso de re-autenticación del flujo *link-on-login*, ADR-024). Se llama tras recibir un `409 requires_reauth` de `POST /users/auth/google`: el cliente reenvía el mismo `idToken` (o `code`+`redirectUri`) **más** la `password` de la cuenta. Si la contraseña es correcta, se vincula la credencial Google y se devuelve usuario + token.",
|
|
30996
|
-
"operationId": "
|
|
31963
|
+
"operationId": "post /v1/users/auth/google/confirm-link",
|
|
30997
31964
|
"parameters": [],
|
|
30998
31965
|
"requestBody": {
|
|
30999
31966
|
"content": {
|
|
@@ -31039,7 +32006,7 @@
|
|
|
31039
32006
|
"post": {
|
|
31040
32007
|
"callbacks": {},
|
|
31041
32008
|
"description": "Envía un código OTP por SMS al número dado. Un solo camino para alta y login: si el número ya identifica a una persona, reusa su identidad; si no, la crea. Responde 204 siempre (anti-enumeración): no revela si el número ya existía.",
|
|
31042
|
-
"operationId": "
|
|
32009
|
+
"operationId": "post /v1/users/auth/phone/start",
|
|
31043
32010
|
"parameters": [],
|
|
31044
32011
|
"requestBody": {
|
|
31045
32012
|
"content": {
|
|
@@ -31088,7 +32055,7 @@
|
|
|
31088
32055
|
"post": {
|
|
31089
32056
|
"callbacks": {},
|
|
31090
32057
|
"description": "Verifica el código OTP recibido por SMS y, si es correcto, inicia sesión (devuelve un token de API). El teléfono queda verificado como credencial raíz.",
|
|
31091
|
-
"operationId": "
|
|
32058
|
+
"operationId": "post /v1/users/auth/phone/verify",
|
|
31092
32059
|
"parameters": [],
|
|
31093
32060
|
"requestBody": {
|
|
31094
32061
|
"content": {
|
|
@@ -31144,7 +32111,7 @@
|
|
|
31144
32111
|
"post": {
|
|
31145
32112
|
"callbacks": {},
|
|
31146
32113
|
"description": "Verifica el código (OTP) enviado al registrarse, confirma la cuenta e inicia sesión (devuelve un token de API).",
|
|
31147
|
-
"operationId": "
|
|
32114
|
+
"operationId": "post /v1/users/confirm-email",
|
|
31148
32115
|
"parameters": [],
|
|
31149
32116
|
"requestBody": {
|
|
31150
32117
|
"content": {
|
|
@@ -31200,7 +32167,7 @@
|
|
|
31200
32167
|
"post": {
|
|
31201
32168
|
"callbacks": {},
|
|
31202
32169
|
"description": "Reenvía el código (OTP) para confirmar la cuenta. Responde 204 siempre, exista o no el email o esté ya confirmado (evita enumeración).",
|
|
31203
|
-
"operationId": "
|
|
32170
|
+
"operationId": "post /v1/users/confirm-email/resend",
|
|
31204
32171
|
"parameters": [],
|
|
31205
32172
|
"requestBody": {
|
|
31206
32173
|
"content": {
|
|
@@ -31229,7 +32196,7 @@
|
|
|
31229
32196
|
"post": {
|
|
31230
32197
|
"callbacks": {},
|
|
31231
32198
|
"description": "Agrega un teléfono como método de login a la cuenta autenticada y envía un OTP por SMS. Falla 422 si el número ya pertenece a otra persona.",
|
|
31232
|
-
"operationId": "
|
|
32199
|
+
"operationId": "post /v1/users/link/phone/start",
|
|
31233
32200
|
"parameters": [],
|
|
31234
32201
|
"requestBody": {
|
|
31235
32202
|
"content": {
|
|
@@ -31277,7 +32244,7 @@
|
|
|
31277
32244
|
"post": {
|
|
31278
32245
|
"callbacks": {},
|
|
31279
32246
|
"description": "Verifica el OTP y marca el teléfono como método verificado de la cuenta. No inicia una sesión nueva (ya estás autenticado): responde 204.",
|
|
31280
|
-
"operationId": "
|
|
32247
|
+
"operationId": "post /v1/users/link/phone/verify",
|
|
31281
32248
|
"parameters": [],
|
|
31282
32249
|
"requestBody": {
|
|
31283
32250
|
"content": {
|
|
@@ -31325,7 +32292,7 @@
|
|
|
31325
32292
|
"post": {
|
|
31326
32293
|
"callbacks": {},
|
|
31327
32294
|
"description": "Intercambia email + contraseña por un token de API. Si la cuenta aún no está confirmada, responde 403 (hay que confirmar el email primero).",
|
|
31328
|
-
"operationId": "
|
|
32295
|
+
"operationId": "post /v1/users/login",
|
|
31329
32296
|
"parameters": [],
|
|
31330
32297
|
"requestBody": {
|
|
31331
32298
|
"content": {
|
|
@@ -31381,7 +32348,7 @@
|
|
|
31381
32348
|
"delete": {
|
|
31382
32349
|
"callbacks": {},
|
|
31383
32350
|
"description": "Revoca el token de API usado en esta request.",
|
|
31384
|
-
"operationId": "
|
|
32351
|
+
"operationId": "delete /v1/users/logout",
|
|
31385
32352
|
"parameters": [],
|
|
31386
32353
|
"responses": {
|
|
31387
32354
|
"204": {
|
|
@@ -31397,7 +32364,7 @@
|
|
|
31397
32364
|
"/v1/users/me": {
|
|
31398
32365
|
"get": {
|
|
31399
32366
|
"callbacks": {},
|
|
31400
|
-
"operationId": "
|
|
32367
|
+
"operationId": "get /v1/users/me",
|
|
31401
32368
|
"parameters": [],
|
|
31402
32369
|
"responses": {
|
|
31403
32370
|
"200": {
|
|
@@ -31431,7 +32398,7 @@
|
|
|
31431
32398
|
"patch": {
|
|
31432
32399
|
"callbacks": {},
|
|
31433
32400
|
"description": "Perfil de identidad global: nombre, avatar, zona horaria e idioma.",
|
|
31434
|
-
"operationId": "
|
|
32401
|
+
"operationId": "patch /v1/users/profile",
|
|
31435
32402
|
"parameters": [],
|
|
31436
32403
|
"requestBody": {
|
|
31437
32404
|
"content": {
|
|
@@ -31476,7 +32443,7 @@
|
|
|
31476
32443
|
"post": {
|
|
31477
32444
|
"callbacks": {},
|
|
31478
32445
|
"description": "Crea un usuario con email y contraseña y le envía un código (OTP) para confirmar el email. NO inicia sesión: el usuario debe confirmar con `POST /users/confirm-email` antes de entrar. Responde 201 sin token.",
|
|
31479
|
-
"operationId": "
|
|
32446
|
+
"operationId": "post /v1/users/register",
|
|
31480
32447
|
"parameters": [],
|
|
31481
32448
|
"requestBody": {
|
|
31482
32449
|
"content": {
|
|
@@ -31515,7 +32482,7 @@
|
|
|
31515
32482
|
"post": {
|
|
31516
32483
|
"callbacks": {},
|
|
31517
32484
|
"description": "Envía por email un enlace para restablecer la contraseña. Responde 204 siempre, exista o no el email (evita enumeración de usuarios).",
|
|
31518
|
-
"operationId": "
|
|
32485
|
+
"operationId": "post /v1/users/reset-password",
|
|
31519
32486
|
"parameters": [],
|
|
31520
32487
|
"requestBody": {
|
|
31521
32488
|
"content": {
|
|
@@ -31544,7 +32511,7 @@
|
|
|
31544
32511
|
"post": {
|
|
31545
32512
|
"callbacks": {},
|
|
31546
32513
|
"description": "Canjea el token de reset (recibido por email) y fija una nueva contraseña.",
|
|
31547
|
-
"operationId": "
|
|
32514
|
+
"operationId": "post /v1/users/reset-password/confirm",
|
|
31548
32515
|
"parameters": [],
|
|
31549
32516
|
"requestBody": {
|
|
31550
32517
|
"content": {
|
|
@@ -31592,7 +32559,7 @@
|
|
|
31592
32559
|
"/v1/users/settings": {
|
|
31593
32560
|
"patch": {
|
|
31594
32561
|
"callbacks": {},
|
|
31595
|
-
"operationId": "
|
|
32562
|
+
"operationId": "patch /v1/users/settings",
|
|
31596
32563
|
"parameters": [],
|
|
31597
32564
|
"requestBody": {
|
|
31598
32565
|
"content": {
|
|
@@ -31637,7 +32604,7 @@
|
|
|
31637
32604
|
"post": {
|
|
31638
32605
|
"callbacks": {},
|
|
31639
32606
|
"description": "Token firmado de vida corta para autenticar la conexión websocket (`/socket`). El bearer de la API no debe viajar en el query string del upgrade (los proxies loguean la URL); este token de minutos sí puede. Cada reconexión acuña uno nuevo.",
|
|
31640
|
-
"operationId": "
|
|
32607
|
+
"operationId": "post /v1/users/socket-token",
|
|
31641
32608
|
"parameters": [],
|
|
31642
32609
|
"responses": {
|
|
31643
32610
|
"200": {
|
|
@@ -31671,7 +32638,7 @@
|
|
|
31671
32638
|
"patch": {
|
|
31672
32639
|
"callbacks": {},
|
|
31673
32640
|
"description": "Cambia el handle con el que te descubren. Valida formato/charset (ASCII, minúsculas), nombres reservados y unicidad. Devuelve 422 con error en `username` si está tomado o es inválido.",
|
|
31674
|
-
"operationId": "
|
|
32641
|
+
"operationId": "patch /v1/users/username",
|
|
31675
32642
|
"parameters": [],
|
|
31676
32643
|
"requestBody": {
|
|
31677
32644
|
"content": {
|
|
@@ -31716,7 +32683,7 @@
|
|
|
31716
32683
|
"get": {
|
|
31717
32684
|
"callbacks": {},
|
|
31718
32685
|
"description": "Los webhook endpoints de la organización (solo metadatos; el signing secret se obtiene con `GET .../:id/secret`).",
|
|
31719
|
-
"operationId": "
|
|
32686
|
+
"operationId": "get /v1/webhooks",
|
|
31720
32687
|
"parameters": [],
|
|
31721
32688
|
"responses": {
|
|
31722
32689
|
"200": {
|
|
@@ -31738,7 +32705,7 @@
|
|
|
31738
32705
|
"post": {
|
|
31739
32706
|
"callbacks": {},
|
|
31740
32707
|
"description": "Suscribe una URL a eventos del event store. La plataforma genera el **signing secret** (`whsec_…`) y lo incluye en esta respuesta (`secret`); con él el receptor verifica la firma de cada entrega (spec Standard Webhooks). También puede recuperarse después con `GET .../:id/secret`.",
|
|
31741
|
-
"operationId": "
|
|
32708
|
+
"operationId": "post /v1/webhooks",
|
|
31742
32709
|
"parameters": [],
|
|
31743
32710
|
"requestBody": {
|
|
31744
32711
|
"content": {
|
|
@@ -31793,7 +32760,7 @@
|
|
|
31793
32760
|
"delete": {
|
|
31794
32761
|
"callbacks": {},
|
|
31795
32762
|
"description": "Elimina el endpoint y su historial de deliveries. Deja de recibir entregas.",
|
|
31796
|
-
"operationId": "
|
|
32763
|
+
"operationId": "delete /v1/webhooks/{id}",
|
|
31797
32764
|
"parameters": [
|
|
31798
32765
|
{
|
|
31799
32766
|
"description": "",
|
|
@@ -31829,7 +32796,7 @@
|
|
|
31829
32796
|
},
|
|
31830
32797
|
"get": {
|
|
31831
32798
|
"callbacks": {},
|
|
31832
|
-
"operationId": "
|
|
32799
|
+
"operationId": "get /v1/webhooks/{id}",
|
|
31833
32800
|
"parameters": [
|
|
31834
32801
|
{
|
|
31835
32802
|
"description": "",
|
|
@@ -31873,7 +32840,7 @@
|
|
|
31873
32840
|
"patch": {
|
|
31874
32841
|
"callbacks": {},
|
|
31875
32842
|
"description": "Cambia `url`/`enabledEvents`/`status`. Reactivar (`status: \"enabled\"`) un endpoint auto-deshabilitado limpia el motivo del disable. El slug y el secret no se tocan aquí.",
|
|
31876
|
-
"operationId": "
|
|
32843
|
+
"operationId": "patch /v1/webhooks/{id}",
|
|
31877
32844
|
"parameters": [
|
|
31878
32845
|
{
|
|
31879
32846
|
"description": "",
|
|
@@ -31928,7 +32895,7 @@
|
|
|
31928
32895
|
"put": {
|
|
31929
32896
|
"callbacks": {},
|
|
31930
32897
|
"description": "Cambia `url`/`enabledEvents`/`status`. Reactivar (`status: \"enabled\"`) un endpoint auto-deshabilitado limpia el motivo del disable. El slug y el secret no se tocan aquí.",
|
|
31931
|
-
"operationId": "
|
|
32898
|
+
"operationId": "put /v1/webhooks/{id}",
|
|
31932
32899
|
"parameters": [
|
|
31933
32900
|
{
|
|
31934
32901
|
"description": "",
|
|
@@ -31985,7 +32952,7 @@
|
|
|
31985
32952
|
"get": {
|
|
31986
32953
|
"callbacks": {},
|
|
31987
32954
|
"description": "La bitácora de entregas (canónico GitHub): qué eventos se entregaron, cuántos intentos costaron y con qué respondió el receptor. Más recientes primero (máx. 50).",
|
|
31988
|
-
"operationId": "
|
|
32955
|
+
"operationId": "get /v1/webhooks/{id}/deliveries",
|
|
31989
32956
|
"parameters": [
|
|
31990
32957
|
{
|
|
31991
32958
|
"description": "",
|
|
@@ -32021,7 +32988,7 @@
|
|
|
32021
32988
|
"post": {
|
|
32022
32989
|
"callbacks": {},
|
|
32023
32990
|
"description": "Genera un `whsec_…` nuevo para el MISMO endpoint (el historial no cambia). El secret viejo deja de firmar de inmediato: actualiza la copia del receptor. La respuesta incluye el nuevo secret.",
|
|
32024
|
-
"operationId": "
|
|
32991
|
+
"operationId": "post /v1/webhooks/{id}/rotate",
|
|
32025
32992
|
"parameters": [
|
|
32026
32993
|
{
|
|
32027
32994
|
"description": "",
|
|
@@ -32057,7 +33024,7 @@
|
|
|
32057
33024
|
"get": {
|
|
32058
33025
|
"callbacks": {},
|
|
32059
33026
|
"description": "El `whsec_…` del endpoint, para configurarlo en el receptor (modelo Svix `GET .../secret` / Stripe dashboard \"Reveal\"). Es una llave de firma compartida, no una credencial de autenticación entrante: por eso es recuperable, a diferencia de `sk_`/`mat_`.",
|
|
32060
|
-
"operationId": "
|
|
33027
|
+
"operationId": "get /v1/webhooks/{id}/secret",
|
|
32061
33028
|
"parameters": [
|
|
32062
33029
|
{
|
|
32063
33030
|
"description": "",
|
|
@@ -32093,7 +33060,7 @@
|
|
|
32093
33060
|
"get": {
|
|
32094
33061
|
"callbacks": {},
|
|
32095
33062
|
"description": "Devuelve la organización a la que pertenece el token de máquina y sus permisos efectivos. La organización sale del token (no de la URL): así una herramienta externa la infiere sin que el desarrollador la configure.",
|
|
32096
|
-
"operationId": "
|
|
33063
|
+
"operationId": "get /v1/whoami",
|
|
32097
33064
|
"parameters": [],
|
|
32098
33065
|
"responses": {
|
|
32099
33066
|
"200": {
|