chromium-dashboard/openapi/api.yaml

1963 строки
54 KiB
YAML

openapi: 3.0.0
info:
description: >-
The API for chromestatus.com. chromestatus.com is the official tool used
for tracking feature launches in Blink (the browser engine that powers
Chrome and many other web browsers). This tool guides feature owners
through our launch process and serves as a primary source for developer
information that then ripples throughout the web developer ecosystem.
More details at: https://github.com/GoogleChrome/chromium-dashboard
version: 1.0.0
title: chomestatus API
license:
name: Apache-2.0
url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
servers:
- url: /api/v0
paths:
/features/{feature_id}/attachments:
parameters:
- name: feature_id
in: path
description: Feature ID
required: true
schema:
type: integer
post:
summary: Store a file that will be attached to a feature
operationId: addAttachment
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
uploaded-file:
type: string
format: binary
responses:
'200':
description: The URL of the stored attachment.
content:
application/json:
schema:
$ref: '#/components/schemas/AddAttachmentResponse'
/features/{feature_id}/votes:
parameters:
- name: feature_id
in: path
description: Feature ID
required: true
schema:
type: integer
get:
summary: Get votes for a feature
operationId: getVotesForFeature
responses:
'200':
description: A list of votes for the specified feature.
content:
application/json:
schema:
$ref: '#/components/schemas/GetVotesResponse'
'404':
description: Feature not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/features/{feature_id}/votes/{gate_id}:
parameters:
- in: path
name: feature_id
required: true
schema:
type: integer
description: The ID of the feature to retrieve votes for.
- in: path
name: gate_id
required: true
schema:
type: integer
description: The ID of the gate associated with the votes.
get:
summary: Get votes for a feature and gate
operationId: getVotesForFeatureAndGate
responses:
'200':
description: A list of votes for the specified feature and gate.
content:
application/json:
schema:
$ref: '#/components/schemas/GetVotesResponse'
'404':
description: Feature or gate not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
post:
summary: Set a user's vote value for the specific feature and gate.
operationId: setVoteForFeatureAndGate
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostVoteRequest'
responses:
'200':
description: Vote set successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'400':
description: Feature or gate not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'403':
description: User does not have permission.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/features/{feature_id}/gates:
parameters:
- in: path
name: feature_id
required: true
schema:
type: integer
description: The ID of the feature to retrieve votes for.
get:
summary: Get all gates for a feature
operationId: getGatesForFeature
responses:
'200':
description: A list of gates for the specified feature. List can be empty.
content:
application/json:
schema:
$ref: '#/components/schemas/GetGateResponse'
/features/{feature_id}/gates/{gate_id}:
parameters:
- in: path
name: feature_id
required: true
schema:
type: integer
description: The ID of the feature to retrieve votes for.
- in: path
name: gate_id
required: true
schema:
type: integer
description: The ID of the gate to retrieve votes for.
post:
summary: Set the assignees for a gate.
operationId: setAssigneesForGate
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostGateRequest'
responses:
'200':
description: Assignees set successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'400':
description: Assignee is not a reviewer
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'403':
description: User does not have permission.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/gates/pending:
get:
summary: Get all pending gates
operationId: getPendingGates
responses:
'200':
description: A list of all pending gates.
content:
application/json:
schema:
$ref: '#/components/schemas/GetGateResponse'
/features/{feature_id}/stages/{stage_id}/addXfnGates:
parameters:
- in: path
name: feature_id
required: true
schema:
type: integer
- in: path
name: stage_id
required: true
schema:
type: integer
post:
summary: Add a full set of cross-functional gates to a stage.
operationId: addXfnGatesToStage
responses:
'200':
description: Vote set successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'403':
description: User does not have permission.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'404':
description: Feature or Stage not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/features/<int:feature_id>/approvals/comments:
parameters:
- name: feature_id
in: path
required: true
schema:
type: integer
get:
summary: Get all comments for a given feature
operationId: getFeatureComments
responses:
'200':
description: List of comments for the feature.
content:
application/json:
schema:
$ref: '#/components/schemas/GetCommentsResponse'
post:
summary: Add a comment to a feature
operationId: addFeatureComment
requestBody:
description: Add a review commend and possible set a approval value
content:
application/json:
schema:
$ref: '#/components/schemas/CommentsRequest'
responses:
'200':
description: Comment added successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'403':
description: User is not allowed to comment on this feature
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
patch:
summary: Update a comment on a feature
operationId: updateFeatureComment
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchCommentRequest'
responses:
'200':
description: Comment updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'403':
description: User is not allowed to update this comment
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/features/<int:feature_id>/approvals/<int:gate_id>/comments:
parameters:
- name: feature_id
in: path
required: true
schema:
type: integer
- name: gate_id
in: path
required: true
schema:
type: integer
get:
summary: Get all comments for a given gate
operationId: getGateComments
responses:
'200':
description: List of comments for the gate.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Activity'
post:
summary: Add a comment to a specific gate
operationId: addGateComment
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CommentsRequest'
responses:
'200':
description: Comment added successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'403':
description: User is not allowed to comment on this gate
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'404':
description: Gate not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/accounts:
post:
summary: Create a new account
operationId: createAccount
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateAccountRequest'
responses:
'200':
description: Account created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponse'
'400':
description: Bad request or user already exists
/accounts/{account_id}:
delete:
summary: Delete an account
operationId: deleteAccount
parameters:
- in: path
name: account_id
schema:
type: integer
required: true
description: ID of the account to delete
responses:
'200':
description: Account deleted successfully
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Done
'400':
description: Bad request
'404':
description: Account not found
/origintrials:
get:
summary: Get origin trials
operationId: getOriginTrials
responses:
'200':
description: List of all origin trials
content:
application/json:
schema:
$ref: '#/components/schemas/GetOriginTrialsResponse'
'500':
description: Error obtaining origin trial data from API or Malformed response from origin trials API
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/origintrials/{feature_id}/{stage_id}/create:
post:
summary: Create a new origin trial
operationId: createOriginTrial
parameters:
- in: path
name: feature_id
schema:
type: integer
required: true
- in: path
name: stage_id
schema:
type: integer
required: true
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOriginTrialRequest'
responses:
'200':
description: Origin trial created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'400':
description: Invalid request. Possible reasons include an unapproved gate, a missing feature/stage, or validation errors.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'404':
description: The specified feature or stage was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Server error, such as issues with obtaining necessary Chromium files or origin trial data.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/origintrials/{feature_id}/{extension_stage_id}/extend:
patch:
summary: Extend an existing origin trial
operationId: extendOriginTrial
parameters:
- in: path
name: feature_id
schema:
type: integer
required: true
- in: path
name: extension_stage_id
schema:
type: integer
required: true
responses:
'200':
description: Origin trial extended successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'400':
description: Invalid request. Possible reasons include missing or incorrect feature/stage, or validation errors.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'404':
description: The specified feature or stage was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Server error, such as issues with the origin trials API or Chromium schedule.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/componentsusers:
get:
summary: List all components and possible users
operationId: listComponentUsers
security:
- XsrfToken: []
responses:
'200':
description: List of all the potential users and components with existing subscribers and owners.
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentsUsersResponse'
/components/{componentId}/users/{userId}:
put:
summary: Add a user to a component
operationId: addUserToComponent
security:
- XsrfToken: []
parameters:
- in: path
name: componentId
schema:
type: integer
required: true
description: Component ID
- in: path
name: userId
schema:
type: integer
required: true
description: User ID
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentUsersRequest'
responses:
'200':
description: Success
delete:
summary: Remove a user from a component
operationId: removeUserFromComponent
security:
- XsrfToken: []
parameters:
- in: path
name: componentId
schema:
type: integer
required: true
description: Component ID
- in: path
name: userId
schema:
type: integer
required: true
description: User ID
responses:
'200':
description: Success
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentUsersRequest'
/review-latency:
get:
summary: List recently reviewed features and their review latency
operationId: listReviewsWithLatency
responses:
'200':
description: >-
List of recent reviews and their latency.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ReviewLatency'
/login:
get:
summary: reject unneeded GET request without triggering Error Reporting
operationId: rejectGetRequestsLogin
responses:
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/RejectUnneededGetRequest'
post:
summary: Authenticate user with Google Sign-In
operationId: authenticateUser
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SignInRequest'
responses:
'200':
description: User authenticated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'401':
description: Invalid Token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/logout:
get:
summary: reject unneeded GET request without triggering Error Reporting
operationId: rejectGetRequestsLogout
responses:
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/RejectUnneededGetRequest'
post:
summary: Log out the current user
operationId: logoutUser
responses:
'200':
description: User logged out successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
/currentuser/permissions:
get:
summary: Get the permissions and email of the user
operationId: getUserPermissions
parameters:
- in: query
name: returnPairedUser
schema:
type: boolean
required: false
description: If true, return the permissions of the paired user.
responses:
'200':
description: The permissions and email of the user.
content:
application/json:
schema:
$ref: '#/components/schemas/PermissionsResponse'
/currentuser/settings:
get:
summary: Get user settings
operationId: getUserSettings
responses:
'200':
description: Successfuly retrieved user settings
content:
application/json:
schema:
$ref: '#/components/schemas/GetSettingsResponse'
'404':
description: User preference not found
post:
summary: Set the user settings (currently only the notify_as_starrer)
operationId: setUserSettings
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostSettingsRequest'
responses:
'200':
description: Settings updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
'403':
description: User not signed-in
/currentuser/stars:
get:
summary: Get a list of all starred feature IDs for the signed-in user
operationId: getStars
responses:
'200':
description: List of starred feature IDs
content:
application/json:
schema:
type: object
items:
$ref: '#/components/schemas/GetStarsResponse'
post:
summary: Set or clear a star on the specified feature
operationId: setStar
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
featureId:
type: integer
starred:
type: boolean
responses:
'200':
description: Star set or cleared successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
/currentuser/cues:
get:
summary: Get dismissed cues for the current user
operationId: getDismissedCues
responses:
'200':
description: List of dismissed cue cards
content:
application/json:
schema:
type: array
items:
type: string
'400':
description: Invalid cue provided
content:
application/json:
schema:
type: object
properties:
error:
type: string
post:
summary: Dismiss a cue card for the signed-in user
operationId: dismissCue
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DismissCueRequest'
responses:
'200':
description: Cue dismissed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessMessage'
/currentuser/token:
post:
summary: Refresh the XSRF token
operationId: refreshToken
responses:
'200':
description: Successfully refreshed the token.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ReviewLatency'
/external_reviews/{review_group}:
get:
summary: List features whose external reviews are incomplete
operationId: listExternalReviews
parameters:
- in: path
name: review_group
required: true
schema:
type: string
enum:
- tag
- gecko
- webkit
description: >
Which review group to focus on:
* `tag` - The W3C TAG
* `gecko` - The rendering engine that powers Mozilla Firefox
* `webkit` - The rendering engine that powers Apple Safari
responses:
'200':
description: >-
List of all the outstanding reviews, ordered by urgency.
content:
application/json:
schema:
$ref: '#/components/schemas/ExternalReviewsResponse'
'404':
description: The review group wasn't recognized.
/spec_mentors:
get:
summary: List spec mentors and their activity
operationId: listSpecMentors
parameters:
- in: query
name: after
schema:
type: string
format: date
responses:
'200':
description: >-
List of all the matching spec mentors.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SpecMentor'
'400':
description: The ?after query parameter isn't a valid date in ISO YYYY-MM-DD format.
/features/{feature_id}/process:
parameters:
- name: feature_id
in: path
description: Feature ID
required: true
schema:
type: integer
get:
summary: Get the process for a feature
operationId: getProcess
responses:
'200':
description: The process for the feature
content:
application/json:
schema:
$ref: '#/components/schemas/Process'
'404':
description: Feature not found based on given ID.
/features/{feature_id}/progress:
parameters:
- name: feature_id
in: path
description: Feature ID
required: true
schema:
type: integer
get:
summary: Get the progress for a feature
operationId: getProgress
responses:
'200':
description: The progress for the feature. Since there's no fixed data structure for progress, it's defined as a free-form object.
content:
application/json:
schema:
type: object
additionalProperties: true
'404':
description: Feature not found based on given ID.
/features/{feature_id}/{stage_id}/{gate_id}/intent:
parameters:
- name: feature_id
in: path
description: Feature ID
required: true
schema:
type: integer
- name: stage_id
in: path
description: Stage ID
required: true
schema:
type: integer
- name: gate_id
in: path
description: Gate ID
required: true
schema:
type: integer
get:
summary: Get the HTML body of an intent draft
operationId: getIntentBody
responses:
'200':
description: Intent draft body.
content:
application/json::
schema:
$ref: '#/components/schemas/GetIntentResponse'
'400':
description: No feature or stage ID specified.
'404':
description: Feature or stage not found based on given ID.
post:
summary: Submit an intent to be posted on blink-dev
operationId: postIntentToBlinkDev
requestBody:
description: Gate ID and additional users to CC email to.
content:
application/json:
schema:
$ref: '#/components/schemas/PostIntentRequest'
responses:
'200':
description: Intent draft body.
content:
application/json:
schema:
$ref: '#/components/schemas/MessageResponse'
'400':
description: No feature or stage ID specified.
'404':
description: Feature or stage not found based on given ID.
/feature-latency:
get:
summary: List how long each feature took to launch
operationId: listFeatureLatency
parameters:
- $ref: '#/components/parameters/startAtParam'
- $ref: '#/components/parameters/endAtParam'
responses:
'200':
description: >-
List the latency of features that launched in date range.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FeatureLatency'
'400':
description: One of the query parameters isn't a valid date in ISO YYYY-MM-DD format.
/feature_links:
get:
summary: Get feature links by feature_id
operationId: getFeatureLinks
parameters:
- name: feature_id
in: query
required: false
schema:
type: integer
- name: update_stale_links
in: query
required: false
schema:
type: boolean
default: true
responses:
'200':
description: return the links and its information to the client
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLinksResponse'
'400':
description: missing feature_id
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'404':
description: feature not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/feature_links_summary:
get:
summary: Get feature links summary
operationId: getFeatureLinksSummary
responses:
'200':
description: return the links and its information to the client
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLinksSummaryResponse'
/feature_links_samples:
get:
summary: Get feature links samples
operationId: getFeatureLinksSamples
parameters:
- name: domain
in: query
required: false
schema:
type: string
- name: type
in: query
required: false
schema:
type: string
- name: is_error
in: query
required: false
schema:
type: boolean
responses:
'200':
description: return the sample links to the client
content:
application/json:
schema:
$ref: '#/components/schemas/FeatureLinksSample'
components:
parameters:
startAtParam:
in: query
name: startAt
schema:
type: string
format: date
description: Start date (RFC 3339, section 5.6, for example, 2017-07-21). The date is inclusive.
required: true
endAtParam:
in: query
name: endAt
schema:
type: string
format: date
description: End date (RFC 3339, section 5.6, for example, 2017-07-21). The date is exclusive.
required: true
securitySchemes:
XsrfToken:
type: apiKey
in: header
name: X-Xsrf-Token
schemas:
Vote:
type: object
properties:
feature_id:
type: integer
gate_id:
type: integer
gate_type:
type: integer
set_by:
type: string
format: email
set_on:
type: string
state:
type: integer
required:
- feature_id
- gate_id
- set_by
- set_on
- state
AddAttachmentResponse:
type: object
properties:
attachment_url:
type: string
GetVotesResponse:
type: object
properties:
votes:
type: array
items:
$ref: '#/components/schemas/Vote'
PostVoteRequest:
type: object
properties:
state:
type: integer
description: The vote value to set. 0 for abstain, 1 for approve, 2 for abstain.
required:
- state
Gate:
type: object
properties:
id:
type: integer
feature_id:
type: integer
stage_id:
type: integer
gate_type:
type: integer
team_name:
type: string
gate_name:
type: string
escalation_email:
type: string
nullable: true
state:
type: integer
requested_on:
type: string
format: date-time
responded_on:
type: string
format: date-time
assignee_emails:
type: array
items:
type: string
format: email
next_action:
type: string
format: data
additional_review:
type: boolean
slo_initial_response:
type: integer
default: 5
description: DEFAULT_SLO_LIMIT is 5 in approval_defs.py
slo_initial_response_took:
type: integer
slo_initial_response_remaining:
type: integer
possible_assignee_emails:
type: array
items:
type: string
format: email
GetGateResponse:
type: object
properties:
gates:
type: array
items:
$ref: '#/components/schemas/Gate'
PostGateRequest:
type: object
properties:
assignees:
type: array
items:
type: string
format: email
Process:
type: object
properties:
name:
type: string
description:
type: string
applicability:
type: string
stages:
type: array
items:
$ref: '#/components/schemas/ProcessStage'
ProcessStage:
type: object
properties:
name:
type: string
description:
type: string
progress_items:
type: array
items:
$ref: '#/components/schemas/ProgressItem'
actions:
type: array
items:
$ref: '#/components/schemas/Action'
approvals:
type: array
items:
$ref: '#/components/schemas/GateInfo'
incoming_stage:
type: integer
outgoing_stage:
type: integer
stage_type:
type: integer
nullable: true
ProgressItem:
type: object
properties:
name:
type: string
field:
type: string
Action:
type: object
properties:
name:
type: string
url:
type: string
prerequisites:
type: array
items:
type: string
GateInfo:
type: object
properties:
name:
type: string
description:
type: string
gate_type:
type: integer
rule:
type: string
approvers:
type: string
description: A list of approvers. A single string can also be accepted and will be treated as a list containing that string.
team_name:
type: string
escalation_email:
type: string
nullable: true
slo_initial_response:
type: integer
default: 5
description: DEFAULT_SLO_LIMIT is 5 in approval_defs.py
Amendment:
type: object
properties:
field_name:
type: string
old_value:
type: string
new_value:
type: string
required:
- field_name
- old_value
- new_value
Activity:
type: object
properties:
comment_id:
type: integer
feature_id:
type: integer
gate_id:
type: integer
nullable: true
created:
type: string
author:
type: string
content:
type: string
deleted_by:
type: string
nullable: true
amendments:
type: array
items:
$ref: '#/components/schemas/Amendment'
required:
- comment_id
- feature_id
- created
- author
- content
CommentsRequest:
type: object
properties:
comment:
type: string
postToThreadType:
type: integer
nullable: true
GetCommentsResponse:
type: object
properties:
comments:
type: array
items:
$ref: '#/components/schemas/Activity'
PatchCommentRequest:
type: object
properties:
commentId:
type: integer
description: The ID of the comment to be updated
isUndelete:
type: boolean
description: Indicates whether to undelete (true) or delete (false) the comment
required:
- commentId
- isUndelete
CreateAccountRequest:
type: object
properties:
email:
type: string
isAdmin:
type: boolean
isSiteEditor:
type: boolean
required:
- email
AccountResponse:
type: object
properties:
is_admin:
type: boolean
is_site_editor:
type: boolean
email:
type: string
id:
type: integer
OriginTrialsInfo:
type: object
properties:
id:
type: string
display_name:
type: string
description:
type: string
origin_trial_feature_name:
type: string
enabled:
type: boolean
status:
type: string
chromestatus_url:
type: string
start_milestone:
type: string
end_milestone:
type: string
original_end_milestone:
type: string
end_time:
type: string
documentation_url:
type: string
feedback_url:
type: string
intent_to_experiment_url:
type: string
trial_extensions:
type: array
items:
type: object
type:
type: string
allow_third_party_origins:
type: boolean
GetOriginTrialsResponse:
properties:
origin_trials:
type: array
items:
$ref: '#/components/schemas/OriginTrialsInfo'
CreateOriginTrialRequest:
type: object
allOf:
- $ref: '#/components/schemas/StageField'
- $ref: '#/components/schemas/MilestoneSetField'
StageField:
type: object
properties:
announcement_url:
$ref: '#/components/schemas/FieldInfo'
browser:
$ref: '#/components/schemas/FieldInfo'
ot_description:
$ref: '#/components/schemas/FieldInfo'
display_name:
$ref: '#/components/schemas/FieldInfo'
enterprise_policies:
$ref: '#/components/schemas/FieldInfo'
finch_url:
$ref: '#/components/schemas/FieldInfo'
experiment_goals:
$ref: '#/components/schemas/FieldInfo'
experiment_risks:
$ref: '#/components/schemas/FieldInfo'
experiment_extension_reason:
$ref: '#/components/schemas/FieldInfo'
intent_thread_url:
$ref: '#/components/schemas/FieldInfo'
origin_trial_feedback_url:
$ref: '#/components/schemas/FieldInfo'
origin_trial_id:
$ref: '#/components/schemas/FieldInfo'
ot_approval_buganizer_component:
$ref: '#/components/schemas/FieldInfo'
ot_approval_buganizer_custom_field_id:
$ref: '#/components/schemas/FieldInfo'
ot_approval_criteria_url:
$ref: '#/components/schemas/FieldInfo'
ot_approval_group_email:
$ref: '#/components/schemas/FieldInfo'
ot_chromium_trial_name:
$ref: '#/components/schemas/FieldInfo'
ot_display_name:
$ref: '#/components/schemas/FieldInfo'
ot_action_requested:
$ref: '#/components/schemas/FieldInfo'
ot_documentation_url:
$ref: '#/components/schemas/FieldInfo'
ot_emails:
$ref: '#/components/schemas/FieldInfo'
ot_feedback_submission_url:
$ref: '#/components/schemas/FieldInfo'
ot_has_third_party_support:
$ref: '#/components/schemas/FieldInfo'
ot_is_critical_trial:
$ref: '#/components/schemas/FieldInfo'
ot_is_deprecation_trial:
$ref: '#/components/schemas/FieldInfo'
ot_owner_email:
$ref: '#/components/schemas/FieldInfo'
ot_request_note:
$ref: '#/components/schemas/FieldInfo'
ot_require_approvals:
$ref: '#/components/schemas/FieldInfo'
ot_stage_id:
$ref: '#/components/schemas/FieldInfo'
ot_webfeature_use_counter:
$ref: '#/components/schemas/FieldInfo'
rollout_impact:
$ref: '#/components/schemas/FieldInfo'
rollout_milestone:
$ref: '#/components/schemas/FieldInfo'
rollout_platforms:
$ref: '#/components/schemas/FieldInfo'
rollout_details:
$ref: '#/components/schemas/FieldInfo'
MilestoneSetField:
type: object
properties:
desktop_first:
$ref: '#/components/schemas/FieldInfo'
desktop_last:
$ref: '#/components/schemas/FieldInfo'
android_first:
$ref: '#/components/schemas/FieldInfo'
android_last:
$ref: '#/components/schemas/FieldInfo'
ios_first:
$ref: '#/components/schemas/FieldInfo'
ios_last:
$ref: '#/components/schemas/FieldInfo'
webview_first:
$ref: '#/components/schemas/FieldInfo'
webview_last:
$ref: '#/components/schemas/FieldInfo'
FieldInfo:
type: object
properties:
form_field_name:
type: string
value:
$ref: '#/components/schemas/FieldInfoValue'
StringFieldInfoValue:
type: object
properties:
form_field_name:
type: string
value_type:
type: string
value:
type: string
BooleanFieldInfoValue:
type: object
properties:
form_field_name:
type: string
value_type:
type: string
value:
type: boolean
IntegerFieldInfoValue:
type: object
properties:
form_field_name:
type: string
value_type:
type: string
value:
type: integer
ArrayFieldInfoValue:
type: object
properties:
form_field_name:
type: string
value_type:
type: string
value:
type: array
items:
type: string
FieldInfoValue:
type: object
discriminator:
propertyName: value_type
mapping:
"integer": "#/components/schemas/IntegerFieldInfoValue"
"string": "#/components/schemas/StringFieldInfoValue"
"boolean": "#/components/schemas/BooleanFieldInfoValue"
"array": "#/components/schemas/ArrayFieldInfoValue"
GetIntentResponse:
properties:
subject:
type: string
email_body:
type: string
required:
- subject
- email_body
PostIntentRequest:
properties:
gate_id:
type: integer
intent_cc_emails:
type: array
items:
type: string
required:
- gate_id
- intent_cc_emails
MessageResponse:
properties:
message:
type: string
required:
- message
ComponentsUsersResponse:
properties:
users:
type: array
items:
$ref: '#/components/schemas/ComponentsUser'
components:
type: array
items:
$ref: '#/components/schemas/OwnersAndSubscribersOfComponent'
ComponentsUser:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
required:
- id
- name
- email
OwnersAndSubscribersOfComponent:
type: object
properties:
id:
type: string
name:
type: string
subscriber_ids:
type: array
items:
type: integer
owner_ids:
type: array
items:
type: integer
required:
- id
- name
ComponentUsersRequest:
description: Traits about the user in relation to the component
properties:
owner:
type: boolean
description: Impacts this user's ownership. For PUT, add ownership. For DELETE, remove ownership.
ReviewLatency:
type: object
properties:
feature:
$ref: '#/components/schemas/FeatureLink'
gate_reviews:
type: array
items:
$ref: '#/components/schemas/GateLatency'
required:
- feature
- gate_reviews
SignInRequest:
type: object
properties:
credential:
type: string
description: The credential generated by Sign-In With Google.
required:
- credential
GateLatency:
type: object
required:
- gate_type
- latency_days
properties:
gate_type:
type: integer
latency_days:
type: integer
SpecMentor:
type: object
properties:
email:
type: string
format: email
mentored_features:
type: array
items:
$ref: '#/components/schemas/FeatureLink'
required:
- email
- mentored_features
FeatureLatency:
type: object
properties:
feature:
$ref: '#/components/schemas/FeatureLink'
entry_created_date:
type: string
format: date
shipped_milestone:
type: integer
shipped_date:
type: string
format: date
owner_emails:
type: array
items:
type: string
format: email
required:
- feature
- entry_created_date
- shipped_milestone
- shipped_date
- owner_emails
ExternalReviewsResponse:
type: object
required:
- reviews
- link_previews
properties:
reviews:
type: array
items:
$ref: '#/components/schemas/OutstandingReview'
link_previews:
type: array
items:
$ref: '#/components/schemas/LinkPreview'
OutstandingReview:
type: object
required:
- review_link
- feature
- current_stage
properties:
review_link:
type: string
format: url
feature:
$ref: '#/components/schemas/FeatureLink'
current_stage:
type: string
enum:
- incubating
- prototyping
- dev-trial
- wide-review
- origin-trial
- shipping
- shipped
description: >
The development stage that the feature has reached:
- [`incubating`](https://www.chromium.org/blink/launching-features/#start-incubating)
- [`prototyping`](https://www.chromium.org/blink/launching-features/#prototyping)
- [`dev-trial`](https://www.chromium.org/blink/launching-features/#dev-trials)
- [`wide-review`](https://www.chromium.org/blink/launching-features/#widen-review)
- [`origin-trial`](https://www.chromium.org/blink/launching-features/#origin-trials)
- [`shipping`](https://www.chromium.org/blink/launching-features/#new-feature-prepare-to-ship)
- `shipped` - The feature is enabled by default in Chromium.
estimated_start_milestone:
type: integer
estimated_end_milestone:
type: integer
FeatureLink:
type: object
required:
- id
- name
properties:
id:
type: integer
example: 5703707724349440
name:
type: string
example: WebGPU
LinkPreviewBase:
type: object
required:
- url
- type
properties:
url:
type: string
format: url
type:
type: string
information:
type: object
nullable: true
http_error_code:
type: integer
nullable: true
LinkPreview:
allOf:
- $ref: '#/components/schemas/LinkPreviewBase'
- discriminator:
propertyName: type
mapping:
github_issue: LinkPreviewGithubIssue
github_markdown: LinkPreviewGithubMarkdown
github_pull_request: LinkPreviewGithubPullRequest
mdn_docs: LinkPreviewMdnDocs
google_docs: LinkPreviewGoogleDocs
mozilla_bug: LinkPreviewMozillaBug
webkit_bug: LinkPreviewWebkitBug
specs: LinkPreviewSpecs
LinkPreviewGithubIssue:
allOf:
- $ref: '#/components/schemas/LinkPreviewBase'
- type: object
properties:
information:
type: object
properties:
url:
type: string
format: url
number:
type: integer
title:
type: string
user_login:
type: string
state:
type: string
enum:
- open
- closed
state_reason:
type: string
enum:
- completed
- reopened
- not_planned
assignee_login:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
closed_at:
type: string
format: date-time
labels:
type: array
items:
type: string
LinkPreviewGithubPullRequest:
allOf:
- $ref: '#/components/schemas/LinkPreviewGithubIssue'
LinkPreviewGithubMarkdown:
allOf:
- $ref: '#/components/schemas/LinkPreviewBase'
- type: object
properties:
information:
type: object
properties:
_parsed_title:
type: string
content:
type: string
LinkPreviewOpenGraph:
allOf:
- $ref: '#/components/schemas/LinkPreviewBase'
- type: object
properties:
information:
type: object
properties:
title:
type: string
description:
type: string
LinkPreviewMdnDocs:
allOf:
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
LinkPreviewGoogleDocs:
allOf:
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
LinkPreviewMozillaBug:
allOf:
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
LinkPreviewWebkitBug:
allOf:
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
LinkPreviewSpecs:
allOf:
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
FeatureLinksResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/LinkPreview'
has_stale_links:
type: boolean
FeatureLinksSummaryResponse:
type: object
properties:
total_count:
type: integer
covered_count:
type: integer
uncovered_count:
type: integer
error_count:
type: integer
http_error_count:
type: integer
link_types:
type: array
items:
$ref: '#/components/schemas/CounterEntry'
uncovered_link_domains:
type: array
items:
$ref: '#/components/schemas/CounterEntry'
error_link_domains:
type: array
items:
$ref: '#/components/schemas/CounterEntry'
FeatureLinksSample:
allOf:
- $ref: '#/components/schemas/LinkPreviewBase'
- type: object
properties:
feature_ids:
type: array
items:
type: integer
CounterEntry:
type: object
properties:
key:
type: string
count:
type: integer
PermissionsResponse:
type: object
properties:
user:
$ref: '#/components/schemas/UserPermissions'
required:
- user
UserPermissions:
type: object
properties:
can_create_feature:
type: boolean
approvable_gate_types:
type: array
items:
type: integer
description: each element should be unique as OAS does not support set
can_comment:
type: boolean
can_edit_all:
type: boolean
is_admin:
type: boolean
email:
type: string
format: email
editable_features:
type: array
items:
type: integer
required:
- can_create_feature
- approvable_gate_types
- can_comment
- can_edit_all
- is_admin
- email
- editable_features
GetStarsResponse:
type: object
properties:
feature_ids:
type: array
items:
type: integer
PostStarsRequest:
type: object
properties:
feature_id:
type: integer
starred:
type: boolean
default: true
required:
- featureId
DismissCueRequest:
type: object
properties:
cue:
type: string
enum:
- progress-checkmarks
required:
- cue
GetSettingsResponse:
type: object
properties:
notify_as_starrer:
type: boolean
required:
- notify_as_starrer
PostSettingsRequest:
type: object
properties:
notify:
type: boolean
required:
- notify
TokenRefreshResponse:
type: object
properties:
token:
type: string
token_expires_sec:
type: integer
SuccessMessage:
type: object
properties:
message:
type: string
example: "Done"
ErrorMessage:
type: object
properties:
error:
type: string
example: "Error"
RejectUnneededGetRequest:
type: object
properties:
message:
type: string
example: "Method Not Allowed"