1963 строки
54 KiB
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"
|