212 Commits

Author SHA1 Message Date
Chris Dent
6eef12125a Create a set of api interoperability guidelines
A new tag has been proposed in governance (see
I34cdfe0e00cd29d816e94668ace2146d66734814 ) which asserts that a
project follows OpenStack guidelines for an API maintaining
compatibility over time. The original "Evaluating API Changes"
guideline is used as the reference for what compatibility means.

That guideline was copied from the wiki in May 2015 and the content
that had been on the wiki last saw substantive change in August of
2012[1]. Under review it was discovered the guidance insufficiently
robust in a situation where the primary goal is for there to be
interoperability between clouds.

A new set of guidelines on what signifies change or instability in an API
is created in this document, with a new name, and with greater context on
the reasoning. The old document has been updated to link to this new
one with an explanation for why.

[1] https://wiki.openstack.org/w/index.php?title=APIChangeGuidelines&action=history

Change-Id: I0063c892cb1bddcca0745cd9f16b5004ff57959a
2017-04-27 17:20:46 +01:00
jolie
6cf4e1deca Fix typo in the doc
Change-Id: Ifd96e34aa1d9058fea3df22ae594299ff950bb7d
2017-02-23 10:13:57 +08:00
Jenkins
2195e5628c Merge "Add guidelines for boolean names" 2017-02-16 16:38:06 +00:00
Jenkins
33293c0764 Merge "Clarify the status values in versions" 2017-02-02 16:59:40 +00:00
Jenkins
bab2a6b5b5 Merge "Add guidelines on usage of state vs. status" 2017-02-02 16:59:34 +00:00
Jenkins
c04450569b Merge "Add guideline for invalid query parameters" 2017-02-02 16:59:28 +00:00
Jenkins
0fccd41ef2 Merge "Removes unnecessary utf-8 encoding" 2017-01-19 16:52:51 +00:00
EdLeafe
0ba0491758 Clarify the status values in versions
When querying for supported versions, the example shows a single API,
with a `status` key that has a value of 'CURRENT'. This patch clarifies
the other possible status values, and what they mean to the consumer.

Closes-Bug: #1636641

Change-Id: I2e5450c77b6f614cff206c352d6d8a23b4f8e9a3
2017-01-18 23:26:29 +00:00
EdLeafe
2b144a7e02 Add guidelines for boolean names
This patch adds guidelines for naming boolean fields and parameters.

Closes-Bug: #1593311

Change-Id: I048195d027b58c765af3cab2d9be8b03b9e7a2b7
2017-01-18 23:21:20 +00:00
EdLeafe
b3e3b5f153 Add guideline for invalid query parameters
This is in response to the bug "Listing resources with invalid filters
should result in a 400", which caused problems in Keystone. We had a
similar guideline for handling invalid entries in a request body; this
adds similar guidance for query strings.

Change-Id: I92c1e0e25036c85398ffd0c40f9c16cb3e8a3029
Partial-Bug: #1654084
2017-01-06 16:31:00 +00:00
Jenkins
6ccd565824 Merge "Trivial fix: correct names of capitalization styles" 2017-01-05 17:03:45 +00:00
gecong1973
48a237ce31 Removes unnecessary utf-8 encoding
The conf.py file was added redundant utf-8 encoding by some editor.
we can delete it.

Change-Id: If2f15027e6f0f0dd8e9e649ff56af4324cf4f8db
2016-12-26 10:49:54 +08:00
EdLeafe
9818603aaf Add guidelines on usage of state vs. status
This patch adds guidelines for when to use the name 'state' vs. when to
use 'status'.

Closes-Bug: #1593313

Change-Id: Ie32387ae6330562fdf0ba4158017dcf2a73b0eef
2016-12-15 22:49:42 +00:00
Jenkins
e01a677e96 Merge "Add clarification on 400 vs. 404 guideline" 2016-12-15 16:11:46 +00:00
EdLeafe
d8bccf5e3e Trivial fix: correct names of capitalization styles
The guideline on how to capitalize complex names uses the corresponding
style when mentioning the different styles to illustrate what each style
looks like. But the entry for 'MixedCase' is wrong. First, it is written
in CamelCase, but more importantly, "mixed case" refers to a variety of
styles of capitalization [0]. The only mixed case besides camelCase for
joined words is commonly called 'StUdLyCaPs' [1], in which the
capitalization is randomly altered.

[0] https://en.wikipedia.org/wiki/Capitalization
[1] https://en.wikipedia.org/wiki/Studly_caps

Change-Id: I41691bed53d5e30b445d042efbf6a7b5dce43185
2016-12-15 15:44:27 +00:00
EdLeafe
dce983bb0f Add clarification on 400 vs. 404 guideline
There was some confusion of the appropriateness of using 400 when a
resource referenced in the body of a request did not exist. An example
of this is when creating a VM, but passing a non-existent flavor in the
request body. This patch clarifies that usage, and adds language to
emphasize that it is critical to be explicit as to exactly what is wrong
so that the issuer of the bad request knows exactly what must be done to
correct the problem.

Change-Id: Ie7b3f4cc49056380f31796aa4cebd99a574c132a
2016-12-01 16:45:30 +00:00
EdLeafe
03b5bdd430 Add the operator for "not in" to the filter guideline
When filtering, one can use the ``in:`` operator to filter on results
that have a particular value in a specified list.
The question of how to specify a value that is *not* in a list came up,
so this patch adds the ``nin:`` operator to signify "not in". Note that
there was also a good deal of ambivalence between ``nin:`` and
``not_in:``, but it was felt that ``nin:`` was more consistent with
``neq:``.

Change-Id: I56049fccdea1d766fcccfd38307b02ef3baf7dd9
2016-11-17 18:18:41 +00:00
Ruby Loo
fb2eb9f3b9 Change ironic liaison from lucasagomes to vdrok
This changes the ironic liaison to the API Working Group,
from Lucas Gomes to Vladyslav Drok.

Change-Id: Ic84bc088b7c13a9b45ba9c70f60e7b175c8f850c
2016-11-10 14:43:09 -05:00
Jenkins
e3c0508bac Merge "Specify time intervals based filtering queries" 2016-11-10 16:16:52 +00:00
Jenkins
05fc0f2f04 Merge "Clarify why CRUD is not a great descriptor" 2016-11-10 16:16:47 +00:00
Jenkins
2634c201d4 Merge "Add guidelines for complex queries" 2016-11-10 16:16:21 +00:00
dparalen
11683bcafd Specify time intervals based filtering queries
This change introduces ISO8601-like time interval queries support.

Change-Id: I847dce368f74d021d6c2004bd6609b87e1c487a4
2016-11-02 08:43:04 +01:00
Chris Dent
bea235a564 Clarify why CRUD is not a great descriptor
Especially with regard to understanding POST.

Change-Id: I144a467b1ffa9a625fd00171898de52f41475c13
Closes-Bug: 1633478
2016-11-01 13:22:56 +00:00
Chris Dent
0a3a901dd2 Fix list formatting problem in microversion guideline
Some incorrect formatting for a nested list was present.
That has been corrected.

Change-Id: I5c18d6dee66f88b360c62dabbbbe37f0892f7b36
Closes-Bug: #1634554
2016-10-19 10:28:29 +01:00
EdLeafe
5999cef8f6 Add guidelines for complex queries
This patch adds additional information regarding best practices when
requesting resources that are filtered by multiple values. It also
strengthens the admonition not to use request bodies with methods that
do not support request bodies.

Change-Id: I66081f25e16c82ee0350a9fb48e1d9f485e44ef6
2016-10-14 13:31:44 +00:00
Jenkins
5e720b7b15 Merge "Update and correct links in README" 2016-10-13 17:00:52 +00:00
Chris Dent
1d5332b54e Update and correct links in README
The README had not been providing a link to the published guidelines
and an existing link was in markdown format, not RST.

Change-Id: I08ad96ae91f4bb9c13cdb449d1f76a72dd1c1b9a
Closes-Bug: #1632435
2016-10-11 20:17:38 +01:00
Michael McCune
57b9aa6a51 add a warning about json expectations
This change follows the discussion from a recent wg meeting[1] about
making a clear statement that the guidelines are assumed to be written
for JSON based payloads.

[1]:
http://eavesdrop.openstack.org/irclogs/%23openstack-meeting-3/%23openstack-meeting-3.2016-08-18.log.html#t2016-08-18T16:33:56

Change-Id: Iae6266c00062ad1693fe680b839dac49ff5518f7
Closes-Bug: #1614624
2016-09-22 12:18:39 -04:00
Jenkins
64e3e9b072 Merge "Add the beginning of a set of guidlines for URIs" 2016-09-01 16:15:32 +00:00
Jenkins
49dcdf00e5 Merge "A guideline for links" 2016-09-01 16:15:26 +00:00
Jenkins
49b3549e3d Merge "Clear the case if the version string isn't parsable" 2016-09-01 16:11:28 +00:00
scottda
9e2e53cad2 Change Cinder api-wg liason
Alex Meade is stepping down. Scott DAngelo will replace him.

Change-Id: Id9472e94576e6248f1216b61b88a04b6b9cd9f1e
2016-08-30 13:40:50 -06:00
Everett Toews
2b3ac7c12e A guideline for links
Change-Id: I0b69ed5d52b347684e9eed768600ce04bab51853
Closes-Bug: 1562058
2016-08-25 11:55:59 -05:00
Jenkins
31756f7018 Merge "Clarify backslash usage for 'in' operator" 2016-08-25 16:54:12 +00:00
Chris Dent
9589281f1d Add the beginning of a set of guidlines for URIs
This guideline claims that effective URI design is critical to
effective APIs and lays in some initial groundwork for gathering
good advice on how to do it, starting with some suggestions on
how to do deal with collections in URIs

Change-Id: I9cd6b752ddb11597180ca22ce6326dda2a3311e2
2016-08-19 10:48:48 +01:00
He Jie Xu
16769b6a89 Clear the case if the version string isn't parsable
There isn't clear description what should be returned when the
version string isn't parsable. This patch clears about that.

Change-Id: I7bf6b28cf1d6f30ea0cb300b2da7cc05a1971c4e
2016-08-12 15:37:27 +08:00
Everett Toews
9a27e94ab6 Helpful hint pointing to Errors guideline.
Change-Id: I0da92edb1320ca5767a41cc319abf7292112cb03
Closes-Bug: 1593308
2016-08-11 11:22:58 -05:00
Omar Shykhkerimov
7fce4fe5bf Clarify backslash usage for 'in' operator
As 'in' operator is being implemented in oslo.utils, usage of
backslash inside quotes for values of operator 'in' should be clarified.

Change-Id: If80d648674182ff9902a992cf3cec24daaad8040
Depends-On: I15236d28b2136153db093590fb4dae65a87eb3e3
Co-Authored-By: Alexis Lee <lxsli@hpe.com>
2016-08-11 14:43:54 +03:00
Jenkins
5d840ab658 Merge "Remove "Conveying error/fault information" section" 2016-07-07 16:41:53 +00:00
Jenkins
aa70dd258b Merge "Get rid of the DRAFT warning at the top of guidelines" 2016-07-07 16:38:14 +00:00
Everett Toews
e13a8f49bf Remove "Conveying error/fault information" section
This is already covered in the "Failure Code Clarifications" section
and the Errors guideline [1]

[1] http://specs.openstack.org/openstack/api-wg/guidelines/errors.html

Change-Id: I43811cc4a17ca29a144c88dc1e3cb68aae30a374
Closes-Bug: 1593308
2016-06-16 22:55:01 -05:00
Chris Dent
76b96ff6c7 Get rid of the DRAFT warning at the top of guidelines
This makes it seem like the guidelines are not yet ready. They are
ready but they are also constantly evolving. We don't want people
to go away thinking we're not ready yet.

Change-Id: I41e5849ea9fe0e1ef39c485861dc6686e9df6f1d
2016-06-16 17:38:48 +01:00
Everett Toews
7f45741992 Make the generic version generic
Change-Id: I46b906b8d4b01cb517faa62f7f603b33f3ed8aef
2016-06-09 20:27:55 +00:00
Salvatore Orlando
f31f6bd767 Remove salv-orlando from CP liaisons
The API-wg liaison task is unfortunately not compatible with
salv-orlando's schedule and its current involvement level in
Neutron. Therefore salv-orlando is removing himself from the
liaison list.

Neutron already has another liaison - Henryg.

Change-Id: Ief89d2035229f3ac880533e3dda32a0159a1d2f9
2016-06-03 07:48:49 -07:00
Jenkins
4d343a6c04 Merge "Delete multiple metadata items with a single request" 2016-05-26 16:09:47 +00:00
Jenkins
f543bed8a0 Merge "Description of how to use etags to avoid lost updates" 2016-05-26 16:09:39 +00:00
Jenkins
93027ad152 Merge "Reword the note following microversion headers" 2016-05-19 17:14:30 +00:00
Jenkins
fb2158bab8 Merge "Lowercase Compute in an example header" 2016-05-19 16:14:17 +00:00
Monty Taylor
f75a52f7b7 Reword the note following microversion headers
I had to read the original note four times before it made sense to me.
The problem, I think, was that it talked about 'old' and 'new' - but I
don't have enough context to immediately remember which is old and which
is new. Also, the new thing was first, and my brain wanted to make them
be listed in the opposite order. It was also unclear to me for a bit
which was the one I was supposed to use.

Address those concerns by rewording the note to be clear that the first
option is the desired one, and to refer to each of them as first and
second rather than old and new.

Change-Id: I1d51572eb57278e6b21224ca60516c528de42ee1
2016-05-19 16:08:55 +00:00
Jenkins
55bab390b7 Merge "Revise API doc guidelines for current state" 2016-05-11 20:27:51 +00:00