Skip to content

Commit 052b9f6

Browse files
feat: FIT-473: Project membership API to allow returning all users who are a member explicit or implicit (#555)
Co-authored-by: fern-api <115122769+fern-api[bot]@users.noreply.github.com>
1 parent 74de937 commit 052b9f6

File tree

3 files changed

+246
-0
lines changed

3 files changed

+246
-0
lines changed

.mock/definition/projects.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,12 +1031,20 @@ service:
10311031
ids:
10321032
type: optional<string>
10331033
docs: Comma-separated list of user IDs to filter by
1034+
implicit:
1035+
type: optional<boolean>
1036+
docs: >-
1037+
Include/Exclude implicit project members in the results. If not
1038+
provided, explicit + implicit members are returned.
10341039
no_annotators:
10351040
type: optional<boolean>
10361041
docs: Exclude annotators from the results
10371042
page:
10381043
type: optional<integer>
10391044
docs: A page number within the paginated result set.
1045+
page_size:
1046+
type: optional<integer>
1047+
docs: Number of results to return per page.
10401048
search:
10411049
type: optional<string>
10421050
docs: Search term for filtering members by name, email, or username

.mock/definition/stats.yml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,19 @@
11
types:
2+
ApiProjectsModelStatsAgreementRetrieveResponse:
3+
properties:
4+
agreement: optional<double>
5+
source:
6+
openapi: openapi/openapi.yaml
7+
ApiProjectsModelStatsAgreementGroundtruthRetrieveResponse:
8+
properties:
9+
agreement: optional<double>
10+
source:
11+
openapi: openapi/openapi.yaml
12+
ApiProjectsModelStatsPredictionRetrieveResponse:
13+
properties:
14+
average_prediction_agreement_per_model: optional<double>
15+
source:
16+
openapi: openapi/openapi.yaml
217
ApiProjectsStatsAgreementAnnotatorRetrieveResponse:
318
properties:
419
Agreement_per_annotator:
@@ -55,6 +70,106 @@ service:
5570
auth: false
5671
base-path: ''
5772
endpoints:
73+
api_projects_model_stats_agreement_retrieve:
74+
path: /api/projects/{id}/model-stats/{model_version}/agreement
75+
method: GET
76+
auth: true
77+
docs: >-
78+
Overall agreement between a given model version's predictions and all
79+
annotators on overlapping tasks.
80+
81+
Computed as the average of per-annotator agreement vs this model version
82+
over annotators who overlap on at least one task.
83+
84+
Mirrors IAA per annotator, but one side is the model.
85+
86+
:return: {"agreement": float[0..1]}
87+
source:
88+
openapi: openapi/openapi.yaml
89+
path-parameters:
90+
id: integer
91+
model_version: string
92+
display-name: Get model-version overall agreement vs annotators
93+
response:
94+
docs: Model-version overall agreement vs annotators
95+
type: ApiProjectsModelStatsAgreementRetrieveResponse
96+
examples:
97+
- path-parameters:
98+
id: 1
99+
model_version: model_version
100+
response:
101+
body:
102+
agreement: 1.1
103+
api_projects_model_stats_agreement_groundtruth_retrieve:
104+
path: /api/projects/{id}/model-stats/{model_version}/agreement-groundtruth
105+
method: GET
106+
auth: true
107+
docs: >-
108+
Ground truth agreement for annotations that match predictions of a
109+
specific model version.
110+
111+
This mirrors gt_per_user_agreement but filters stats by tasks where
112+
predictions have given model_version.
113+
114+
:return: {"agreement": float[0..1]}
115+
source:
116+
openapi: openapi/openapi.yaml
117+
path-parameters:
118+
id: integer
119+
model_version: string
120+
display-name: Get model-version ground truth agreement
121+
request:
122+
name: ApiProjectsModelStatsAgreementGroundtruthRetrieveRequest
123+
query-parameters:
124+
per_label:
125+
type: optional<boolean>
126+
default: false
127+
docs: Calculate agreement per label
128+
response:
129+
docs: Model-version ground truth agreement
130+
type: ApiProjectsModelStatsAgreementGroundtruthRetrieveResponse
131+
examples:
132+
- path-parameters:
133+
id: 1
134+
model_version: model_version
135+
response:
136+
body:
137+
agreement: 1.1
138+
api_projects_model_stats_prediction_retrieve:
139+
path: /api/projects/{id}/model-stats/{model_version}/prediction
140+
method: GET
141+
auth: true
142+
docs: >-
143+
Mean agreement of annotator annotations vs predictions for a specific
144+
model version.
145+
146+
Mirrors prediction_per_user_agreement but filtered by
147+
prediction.model_version.
148+
149+
:return: {"average_prediction_agreement_per_model": float[0..1]}
150+
source:
151+
openapi: openapi/openapi.yaml
152+
path-parameters:
153+
id: integer
154+
model_version: string
155+
display-name: Get model-version prediction agreement
156+
request:
157+
name: ApiProjectsModelStatsPredictionRetrieveRequest
158+
query-parameters:
159+
per_label:
160+
type: optional<boolean>
161+
default: false
162+
docs: Calculate agreement per label
163+
response:
164+
docs: Model-version prediction agreement
165+
type: ApiProjectsModelStatsPredictionRetrieveResponse
166+
examples:
167+
- path-parameters:
168+
id: 1
169+
model_version: model_version
170+
response:
171+
body:
172+
average_prediction_agreement_per_model: 1.1
58173
api_projects_stats_agreement_annotator_retrieve:
59174
path: /api/projects/{id}/stats/agreement_annotator/{user_id}
60175
method: GET

.mock/openapi/openapi.yaml

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7262,6 +7262,11 @@ paths:
72627262
name: ids
72637263
schema:
72647264
type: string
7265+
- description: Include/Exclude implicit project members in the results. If not provided, explicit + implicit members are returned.
7266+
in: query
7267+
name: implicit
7268+
schema:
7269+
type: boolean
72657270
- description: Exclude annotators from the results
72667271
in: query
72677272
name: no_annotators
@@ -7273,6 +7278,12 @@ paths:
72737278
required: false
72747279
schema:
72757280
type: integer
7281+
- description: Number of results to return per page.
7282+
in: query
7283+
name: page_size
7284+
required: false
7285+
schema:
7286+
type: integer
72767287
- description: Search term for filtering members by name, email, or username
72777288
in: query
72787289
name: search
@@ -7295,6 +7306,118 @@ paths:
72957306
summary: Get project members paginated
72967307
tags:
72977308
- Projects
7309+
/api/projects/{id}/model-stats/{model_version}/agreement:
7310+
get:
7311+
description: |-
7312+
Overall agreement between a given model version's predictions and all annotators on overlapping tasks.
7313+
Computed as the average of per-annotator agreement vs this model version over annotators who overlap on at least one task.
7314+
Mirrors IAA per annotator, but one side is the model.
7315+
:return: {"agreement": float[0..1]}
7316+
operationId: api_projects_model_stats_agreement_retrieve
7317+
parameters:
7318+
- in: path
7319+
name: id
7320+
required: true
7321+
schema:
7322+
type: integer
7323+
- in: path
7324+
name: model_version
7325+
required: true
7326+
schema:
7327+
type: string
7328+
responses:
7329+
'200':
7330+
content:
7331+
application/json:
7332+
schema:
7333+
properties:
7334+
agreement:
7335+
type: number
7336+
type: object
7337+
description: Model-version overall agreement vs annotators
7338+
security:
7339+
- Token: []
7340+
summary: Get model-version overall agreement vs annotators
7341+
tags:
7342+
- Stats
7343+
/api/projects/{id}/model-stats/{model_version}/agreement-groundtruth:
7344+
get:
7345+
description: |-
7346+
Ground truth agreement for annotations that match predictions of a specific model version.
7347+
This mirrors gt_per_user_agreement but filters stats by tasks where predictions have given model_version.
7348+
:return: {"agreement": float[0..1]}
7349+
operationId: api_projects_model_stats_agreement_groundtruth_retrieve
7350+
parameters:
7351+
- in: path
7352+
name: id
7353+
required: true
7354+
schema:
7355+
type: integer
7356+
- in: path
7357+
name: model_version
7358+
required: true
7359+
schema:
7360+
type: string
7361+
- description: Calculate agreement per label
7362+
in: query
7363+
name: per_label
7364+
schema:
7365+
default: false
7366+
type: boolean
7367+
responses:
7368+
'200':
7369+
content:
7370+
application/json:
7371+
schema:
7372+
properties:
7373+
agreement:
7374+
type: number
7375+
type: object
7376+
description: Model-version ground truth agreement
7377+
security:
7378+
- Token: []
7379+
summary: Get model-version ground truth agreement
7380+
tags:
7381+
- Stats
7382+
/api/projects/{id}/model-stats/{model_version}/prediction:
7383+
get:
7384+
description: |-
7385+
Mean agreement of annotator annotations vs predictions for a specific model version.
7386+
Mirrors prediction_per_user_agreement but filtered by prediction.model_version.
7387+
:return: {"average_prediction_agreement_per_model": float[0..1]}
7388+
operationId: api_projects_model_stats_prediction_retrieve
7389+
parameters:
7390+
- in: path
7391+
name: id
7392+
required: true
7393+
schema:
7394+
type: integer
7395+
- in: path
7396+
name: model_version
7397+
required: true
7398+
schema:
7399+
type: string
7400+
- description: Calculate agreement per label
7401+
in: query
7402+
name: per_label
7403+
schema:
7404+
default: false
7405+
type: boolean
7406+
responses:
7407+
'200':
7408+
content:
7409+
application/json:
7410+
schema:
7411+
properties:
7412+
average_prediction_agreement_per_model:
7413+
type: number
7414+
type: object
7415+
description: Model-version prediction agreement
7416+
security:
7417+
- Token: []
7418+
summary: Get model-version prediction agreement
7419+
tags:
7420+
- Stats
72987421
/api/projects/{id}/project-extra-params/:
72997422
get:
73007423
description: Retrieve the annotator weights for statistics and Cohen's Kappa for a specific project.

0 commit comments

Comments
 (0)