{"openapi":"3.0.0","servers":[{"url":"/"}],"info":{"contact":{"name":"Open Build Service","url":"https://openbuildservice.org/"},"description":"The _Open Build Service API_ is a XML API.\n\nTo authenticate, use [HTTP basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) by passing the _Authorization_ header in the form of `Authorization: Basic <credentials>`.\n\nThere is no API versioning as there is no need for it right now.\n\nOnly rudimentary rate limiting is implemented, so please be gentle when using the API concurrently, especially with potentially expensive operations.\nIn case of abuse, we will limit/remove your access.\n\nFor command-line users, we recommend using [osc](https://github.com/openSUSE/osc) with its _api_ command to interact with the API.\nIt's as simple as this example: `osc api /about` (_about_ is one of the endpoints documented below)\n","license":{"name":"GNU General Public License v2.0","url":"https://github.com/openSUSE/open-build-service/blob/master/COPYING"},"title":"Open Build Service API","version":"2.10.50","x-apisguru-categories":["developer_tools"],"x-origin":[{"format":"openapi","url":"https://build.opensuse.org/apidocs-new/OBS-v2.10.50.yaml","version":"3.0"}],"x-providerName":"opensuse.org","x-serviceName":"obs"},"externalDocs":{"description":"Open Build Service - Documentation","url":"https://openbuildservice.org/help/"},"tags":[{"name":"General Information"},{"name":"Attributes"},{"name":"Attribute Namespaces"},{"name":"Build"},{"name":"Configuration"},{"name":"Distributions"},{"name":"Groups"},{"name":"Issue Trackers"},{"name":"Person"},{"name":"Published Binaries"},{"description":"Please, before using request endpoints, make sure you have read and understood the \"Request and Review System\" section of\nthe [user guide](https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.request_and_review_system.html).\n\nIn the next sections you will see how calls to request endpoints could be combined to fullfill different workflows.\n\n## Workflow 1: Create a Submit Request from Package A to Package B\n\nThe steps described in this workflow could be easily replicated with this command:\n`osc createrequest -a submit home:Admin:Origin A home:Admin:Destination B -m \"Submit A to B\"`\n\nThe logic involved in the creation of a submit request will require to call more endpoints. For the sake of simplicity we suppose, that:\n  - The project `home:Admin:Origin` exists, with a package `A`, and it has a file called `test.txt`.\n  - The latest revision of the package `home:Admin:Origin:A` is `1`.\n  - The project `home:Admin:Destination` doesn't exist.\n  - There aren't any other submit requests previously created with the same source and target.\n\nTo create a submit request, pass the following request body:\n```\n<request>\n  <action type=\"submit\">\n    <source project=\"home:Admin:Origin\" package=\"A\" rev=\"1\"/>\n    <target project=\"home:Admin:Destination\" package=\"B\"/>\n  </action>\n  <state name=\"new\"/>\n  <description>Submit A to B</description>\n</request>\n```\n... to this endpoint: `POST /request?cmd=create`\n\n\n## Workflow 2: Review a Submit Request\n**Add a User as Reviewer of a Submit Request**\n\nFirst, we make sure that a certain user can review our submit request.\nWe will add the user `test1` as a reviewer of the already created submit request.\n\nFor the sake of simplicity we suppose, that:\n  - There is already a user with login name `test1`.\n  - There is already a submit request with number `33`.\n\nAdding the user `test1` as a reviewer of the submit request number `33` can be performed with this command:\n`osc review add -m 'Add user test1 as reviewer' -U test1 33`\n\nThe same action can be done with this API endpoint: `POST /request/33?cmd=addreview&by_user=test1`\n\n**Mark a Review of a Submit Request as Accepted**\n\nNow that the user `test1` is a reviewer of the submit request number `33`, this user can review that submit request as `accepted`.\n\nTo review the submit request as `accepted`, issue the following command, using for authentication the login `test1`:\n`osc review accept -m 'Accept submit request' -U test1 33`\n\nThis can also be done with this API endpoint, using for authentication the login `test1`:\n`POST /request/33?cmd=changereviewstate&newstate=accepted&by_user=test1`\n\n\n## Workflow 3: Approve a Submit Request\n\nTo mark a submit request as approved means that a submit request will be automatically accepted when all the required reviews are accepted.\n\nFor the sake of simplicity let's accept that:\n  - There is already a user with the login name `test1`, which is also a maintainer of the project `home:Admin`.\n  - There is already a submit request with the number `44`.\n  - The user with login name `test1` is a reviewer of the submit request number `44`.\n\n**Note**: The following commands or endpoints should all be executed as user `test1`.\n\n**Mark a Submit Request as Approved**\n\nTo mark a request as approved, execute the following command: `osc request approve -m 'Approve submit request' -U test1 44`\n\nThis can also be done with this endpoint (as user `test1`): `POST /request/44?cmd=approve`\n\n**Review an Already Approved Submit Request as Accepted**\n\nAfter adding a review to this submit request with state `accepted`, the submit request will automatically be accepted.\nThis is the same step that has been described previously in the last section *\"Review a Submit Request as Accepted\"*.\n\nTo perform this operation with `osc`, perform the following command: `osc review accept -m 'Accept submit request' -U test1 44`\n\nThe same can be done with the following endpoint: `POST /request/44?cmd=changereviewstate&newstate=accepted&by_user=test1`\n","externalDocs":{"url":"https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.request_and_review_system.html"},"name":"Request"},{"name":"Workers"}],"paths":{"/about":{"get":{"description":"Get generic information about the API.","responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"commit":{"example":"7b5d82e6143442a8eb8459f35cc94d2fbe263ebe","type":"string"},"description":{"example":"API to the Open Build Service","type":"string"},"last_deployment":{"example":"2020-11-10 15:07:02 +0000","type":"string"},"revision":{"example":"2.11~alpha.20201110T101235.7b5d82e614","type":"string"},"title":{"example":"Open Build Service API","type":"string"}},"required":["title","description","revision"],"type":"object","xml":{"name":"about"}}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [about.xsd](../schema/about.xsd)\n"}},"summary":"Get information about API.","tags":["General Information"]}},"/architectures":{"get":{"description":"Get a list of all known architectures known to OBS in general. This is not the list of architectures provided by this instance. Check the schedulers element from the `/configuration` route for this.\n","responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"count":"4","entry":[{"name":"aarch64"},{"name":"armv7l"},{"name":"s390x"},{"name":"x86_64"}]},"schema":{"properties":{"count":{"type":"integer","xml":{"attribute":true}},"entry":{"items":{"properties":{"name":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"}},"type":"object","xml":{"name":"directory"}}}},"description":"OK. The request has succeeded."},"401":{"content":{"application/xml; charset=utf-8":{"examples":{"anonymous_user":{"summary":"Anonymous User","value":{"code":"anonymous_user","summary":"Anonymous user is not allowed here - please login"}},"authentication_required":{"summary":"Authentication Required","value":{"code":"authentication_required","summary":"Unknown user 'Admin' or invalid password"}}},"schema":{"properties":{"code":{"type":"string","xml":{"attribute":true}},"data":{"items":{"type":"string"},"type":"array"},"details":{"type":"string"},"summary":{"type":"string"}},"type":"object","xml":{"name":"status"}}}},"description":"Unauthorized.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"List all known architectures.","tags":["General Information"]}},"/architectures/{architecture_name}":{"get":{"description":"Show information about one architecture.","parameters":[{"description":"Architecture name","example":"x86_64","in":"path","name":"architecture_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"example":{"name":"x86_64"},"properties":{"name":{"type":"string","xml":{"attribute":true}}},"type":"object","xml":{"name":"architecture"}}}},"description":"OK. The request has succeeded."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"unknown_architecture","summary":"Architecture does not exist: x999"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Show one architecture.","tags":["General Information"]}},"/attribute":{"get":{"description":"List all attribute namespaces.","responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"count":"2","entry":[{"name":"OBS"},{"name":"openSUSE"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"List all attribute namespaces.","tags":["Attribute Namespaces"]}},"/attribute/{namespace}":{"delete":{"description":"Delete an attribute namespace and all attributes below.\n\nThis operation is the same as the one defined with [DELETE /attribute/{namespace}/_meta](#/Attributes/delete_attribute__namespace___meta).\n","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"code":"ok","summary":"Ok"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Delete an attribute namespace and all attributes below.","tags":["Attribute Namespaces"]},"get":{"description":"List all attributes under a given attribute namespace.","parameters":[{"description":"The namespace","example":"OBS_TEST","in":"path","name":"namespace","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"count":"2","entry":[{"name":"AutoCleanup"},{"name":"OwnerRootProject"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find AttribNamespace"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"List all attributes below a namespace.","tags":["Attribute Namespaces"]}},"/attribute/{namespace}/_meta":{"delete":{"description":"Delete an attribute namespace and all attributes below.\n\nThis operation is the same as the one defined with [DELETE /attribute/{namespace}](#/Attributes/delete_attribute__namespace_).\n","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Delete an attribute namespace and all attributes below.","tags":["Attribute Namespaces"]},"get":{"description":"Shows attribute namespace.","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"modifiable_by":{"items":{"properties":{"user":{"example":"user_login_name","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"name":{"example":"OBS_TEST","type":"string","xml":{"attribute":true}}},"type":"object","xml":{"name":"namespace"}}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [attribute_namespace_meta.xsd](../schema/attribute_namespace_meta.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find AttribNamespace"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Show attribute namespace.","tags":["Attribute Namespaces"]},"post":{"description":"This endpoint can be used for both, creating an attribute namespace and updating it:\n  * If the attribute namespace passed as parameter doesn't exist, it will create the attribute namespace.\n  * If the attribute namespace passed as parameter already exists, it will update the namespace attribute.\n\nThis operation is the same as the one defined with [PUT](#/Attributes/put_attribute__namespace___meta).\n","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D~1_meta/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Attribute namespace definition.\n\nXML Schema used for body validation: [attribute_namespace_meta.xsd](../schema/attribute_namespace_meta.xsd)\n","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"empty_body":{"summary":"Validation Failed (Empty Body)","value":{"code":"validation_failed","summary":"Document is empty, not allowed for attribute_namespace_meta"}},"wrong_xml_element":{"summary":"Validation Failed (Wrong XML Element)","value":{"code":"validation_failed","summary":"attribute_namespace_meta validation error: 1:0: ERROR: Element 'foo': No matching global declaration available for the validation root."}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Validation Failed."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"namespace":{"summary":"Not Found (Namespace)","value":{"code":"not_found","summary":"Couldn't find AttribNamespace"}},"user":{"summary":"Not Found (User)","value":{"code":"not_found","summary":"Couldn't find User with login = user_login_name"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Change attribute namespace. Create an attribute namespace if it doesn't exist.","tags":["Attribute Namespaces"]},"put":{"description":"This endpoint can be used for both, creating an attribute namespace and updating it:\n  * If the attribute namespace passed as parameter doesn't exist, it will create the attribute namespace.\n  * If the attribute namespace passed as parameter already exists, it will update the namespace attribute.\n\nThis operation is the same as the one defined with [POST](#/Attributes/post_attribute__namespace___meta).\n","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D~1_meta/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Attribute namespace definition.\n\nXML Schema used for body validation: [attribute_namespace_meta.xsd](../schema/attribute_namespace_meta.xsd)\n","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"empty_body":{"summary":"Validation Failed (Empty Body)","value":{"code":"validation_failed","summary":"Document is empty, not allowed for attribute_namespace_meta"}},"wrong_xml_element":{"summary":"Validation Failed (Wrong XML Element)","value":{"code":"validation_failed","summary":"attribute_namespace_meta validation error: 1:0: ERROR: Element 'foo': No matching global declaration available for the validation root."}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Validation Failed."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"namespace":{"summary":"Not Found (Namespace)","value":{"code":"not_found","summary":"Couldn't find AttribNamespace"}},"user":{"summary":"Not Found (User)","value":{"code":"not_found","summary":"Couldn't find User with login = user_login_name"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Change attribute namespace. Create an attribute namespace if it doesn't exist.","tags":["Attribute Namespaces"]}},"/attribute/{namespace}/{attribute_name}":{"delete":{"description":"Delete an attribute and all its values in projects or packages.\n\nThis operation is the same as the one defined with [DELETE /attribute/{namespace}/{attribute_name}/_meta](#/Attributes/delete_attribute__namespace___attribute_name___meta)\n","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"},{"description":"The name of the attribute","example":"OwnerRootProjectTest","in":"path","name":"attribute_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"namespace":{"summary":"Not Found (Namespace)","value":{"code":"not_found","summary":"Couldn't find AttribNamespace"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Delete an attribute and all its values in projects or packages.","tags":["Attributes"]}},"/attribute/{namespace}/{attribute_name}/_meta":{"delete":{"description":"Delete an attribute and all its values in projects or packages.\n\nThis operation is the same as the one defined with [DELETE /attribute/{namespace}/{attribute_name}](#/Attributes/delete_attribute__namespace___attribute_name_)\n","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"},{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D~1%7Battribute_name%7D/delete/parameters/1"}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"namespace":{"summary":"Not Found (Namespace)","value":{"code":"not_found","summary":"Couldn't find AttribNamespace"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Delete an attribute and all its values in projects or packages.","tags":["Attributes"]},"get":{"description":"Shows attribute.","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"},{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D~1%7Battribute_name%7D/delete/parameters/1"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"allowed":{"properties":{"value":{"example":["DisableDevelTest","BugownerOnlyTest"],"items":{"type":"string"},"type":"array"}},"type":"object"},"count":{"example":0,"type":"integer"},"description":{"example":"An example description for an attribute.","type":"string"},"modifiable_by":{"items":{"properties":{"user":{"example":"user_login_name","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"name":{"example":"OBS_TEST","type":"string","xml":{"attribute":true}},"namespace":{"example":"OwnerRootProjectTest","type":"string","xml":{"attribute":true}}},"type":"object","xml":{"name":"definition"}}}},"description":"OK. The request has succeeded."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"namespace":{"summary":"Not Found (Namespace)","value":{"code":"not_found","summary":"Couldn't find AttribNamespace"}},"unknown_attribute":{"summary":"Unknown Attribute","value":{"code":"unknown_attribute","summary":"Unknown attribute 'OBS_TEST':'OwnerRootProjectTest'"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Shows attribute.","tags":["Attributes"]},"post":{"description":"This endpoint can be used for both, creating an attribute and updating it:\n  * If the attribute passed as parameter doesn't exist, it will create the attribute.\n  * If the attribute passed as parameter already exists, it will update the attribute.\n\nThis operation is the same as the one defined with [PUT](#/Attributes/put_attribute__namespace___attribute_name___meta).\n","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"},{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D~1%7Battribute_name%7D/delete/parameters/1"}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D~1%7Battribute_name%7D~1_meta/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Attribute definition.","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"empty_body":{"summary":"Validation Failed (Empty Body)","value":{"code":"validation_failed","summary":"Document is empty, not allowed for attrib_type"}},"illegal_request":{"summary":"Illegal Request","value":{"code":"illegal_request","summary":"Illegal request: PUT/POST /attribute/OBS_TEST/OwnerRootProjectTest/_meta: path does not match content"}},"wrong_xml_element":{"summary":"Validation Failed (Wrong XML Attributes)","value":{"code":"validation_failed","summary":"attrib_type validation error: 1:0: ERROR: Element definition failed to validate attributes"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Validation Failed."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"namespace":{"summary":"Not Found (Namespace)","value":{"code":"not_found","summary":"Couldn't find AttribNamespace"}},"unknown_attribute":{"summary":"Unknown Attribute","value":{"code":"unknown_attribute","summary":"Unknown attribute 'OBS_TEST':'OwnerRootProjectTest'"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Change attribute data. Create an attribute if it doesn't exist.","tags":["Attributes"]},"put":{"description":"This endpoint can be used for both, creating an attribute and updating it:\n  * If the attribute passed as parameter doesn't exist, it will create the attribute.\n  * If the attribute passed as parameter already exists, it will update the attribute.\n\nThis operation is the same as the one defined with [POST](#/Attributes/post_attribute__namespace___attribute_name___meta).\n","parameters":[{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/get/parameters/0"},{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D~1%7Battribute_name%7D/delete/parameters/1"}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D~1%7Battribute_name%7D~1_meta/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Attribute definition.","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"empty_body":{"summary":"Validation Failed (Empty Body)","value":{"code":"validation_failed","summary":"Document is empty, not allowed for attrib_type"}},"illegal_request":{"summary":"Illegal Request","value":{"code":"illegal_request","summary":"Illegal request: PUT/POST /attribute/OBS_TEST/OwnerRootProjectTest/_meta: path does not match content"}},"wrong_xml_element":{"summary":"Validation Failed (Wrong XML Attributes)","value":{"code":"validation_failed","summary":"attrib_type validation error: 1:0: ERROR: Element definition failed to validate attributes"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Validation Failed."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"namespace":{"summary":"Not Found (Namespace)","value":{"code":"not_found","summary":"Couldn't find AttribNamespace"}},"unknown_attribute":{"summary":"Unknown Attribute","value":{"code":"unknown_attribute","summary":"Unknown attribute 'OBS_TEST':'OwnerRootProjectTest'"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Change attribute data. Create an attribute if it doesn't exist.","tags":["Attributes"]}},"/build":{"get":{"description":"Get a simple directory listing of all projects","responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"entry":[{"name":"openSUSE:Leap:15.1"},{"name":"openSUSE:Leap:15.2"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK\n\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Get a simple directory listing of all projects","tags":["Build"]}},"/build/{project_name}":{"get":{"description":"Get a simple directory listing of all repositories for the specified project","parameters":[{"description":"Project name","example":"home:Admin","in":"path","name":"project_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"entry":[{"name":"openSUSE_Tumbleweed"},{"name":"openSUSE_Leap_15.3"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK\n\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"Unknown Project":{"value":{"code":"unknown_project","summary":"Project not found: <some project>."}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Unknown project.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Get a simple directory listing of all repositories for the specified project","tags":["Build"]},"post":{"description":"Apply different actions on builds/build processes of the specified project","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"description":"Name of the package. Scope the commands to the specified package.","example":"firefox","in":"query","name":"package","schema":{"type":"string"}},{"description":"Name of the build architecture. Scope the commands to the specified architectures.","example":"x86_64","in":"query","name":"arch","schema":{"type":"string"}},{"description":"Name of the repository. Scope the commands to the specified repository.","example":"openSUSE_Leap_15.2","in":"query","name":"repository","schema":{"type":"string"}},{"description":"**NOTE**: All commands described below, can be scoped to a package within the project by setting the `package`\nparameter.\n\n* `wipe`: Delete all binaries build by the project.\n* `restartbuild`: Restart all running build processes inside the project.\n* `rebuild`: Trigger a rebuild of all packages inside the project.\n* `abortbuild`: Abort all running build processes for the specified project, marking them as failed.\n* `killbuild`: Alias for `abortbuild`.\n* `unpublish`: Delete all published package binaries, for the specified project, from the download repository.\n* `sendsysrq`: Send a single sysrq character to the kernel of a running build. Character need to be specified\n               through the `sysrq` parameter. Only a subset of debugging requests are supported (eg. 9, t or w).\n","in":"query","name":"cmd","required":true,"schema":{"enum":["wipe","restartbuild","killbuild","abortbuild","rebuild","unpublish","sendsysrq"],"type":"string"}}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"Illegal Request":{"value":{"code":"illegal_request","summary":"unsupported POST command '<some command>' to <some url>."}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Illegal request.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"403":{"content":{"application/xml; charset=utf-8":{"examples":{"Execute cmd no permission":{"value":{"code":"execute_cmd_no_permission","summary":"No permission to execute command on package <some package> in project <some project>"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Execute command no permission.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"404":{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"Apply different actions on builds/build processes of the specified project","tags":["Build"]}},"/build/{project_name}/_result":{"get":{"description":"Get the build results for packages, architectures and repositories of the specified project.","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"description":"Specify which sections should be included in the result list.\n\n* `status`: Include detailed infos about the build status. **Default**\n* `summary`: Include the summary of the status values.\n* `binarylist`: Include a list of generated binary files.\n","in":"query","name":"view","schema":{"enum":["summary","status","binarylist"],"type":"string"}},{"description":"Name of the package. Limit results to the specified package.","example":"obs-server","in":"query","name":"package","schema":{"type":"string"}},{"description":"Name of the build architecture. Limit results to the specified build architecture.","example":"x86_64","in":"query","name":"arch","schema":{"type":"string"}},{"description":"Name of the repository. Limit results to the specified repository.","example":"openSUSE_Leap_15.2","in":"query","name":"repository","schema":{"type":"string"}},{"description":"Show the last build result (excludes current building job states).","example":1,"in":"query","name":"lastbuild","schema":{"type":"boolean"}},{"description":"Include build results from packages with project local links.","example":1,"in":"query","name":"locallink","schema":{"type":"boolean"}},{"description":"Include build results from _multibuild definitions.","example":1,"in":"query","name":"multibuild","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"result":{"items":{"properties":{"arch":{"example":"x86_64","type":"string","xml":{"attribute":true}},"binarylist":{"items":{"properties":{"binary":{"items":{"properties":{"filename":{"example":"hello-2.10-3.1.x86_64.rpm","type":"string","xml":{"attribute":true}},"mtime":{"example":"1617270174","type":"string","xml":{"attribute":true}},"size":{"example":"58352","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"package":{"example":"ctris","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"code":{"example":"published","type":"string","xml":{"attribute":true}},"project":{"example":"home:foo","type":"string","xml":{"attribute":true}},"repository":{"example":"openSUSE_Leap_15.3","type":"string","xml":{"attribute":true}},"state":{"example":"published","type":"string","xml":{"attribute":true}},"status":{"items":{"properties":{"code":{"example":"succeeded","type":"string","xml":{"attribute":true}},"details":{"example":"package whitelist","type":"string"},"package":{"example":"ctris","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"summary":{"properties":{"statuscount":{"items":{"properties":{"code":{"example":"disabled","type":"string","xml":{"attribute":true}},"count":{"example":"2","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"}},"type":"object"}},"type":"object"},"type":"array"},"state":{"example":"e096d16554264fa553ca0aa3226cf189","type":"string","xml":{"attribute":true}}},"type":"object","xml":{"name":"resultlist"}}}},"description":"OK.\n\nXML Schema used for body validation: [buildresult.rng](../schema/buildresult.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"Get the build results for packages, architectures and repositories of the specified project.","tags":["Build"]}},"/build/{project_name}/{repository_name}":{"get":{"description":"List of all architectures the specified project builds against a given repository.","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"description":"Repository name","example":"openSUSE_Tumbleweed","in":"path","name":"repository_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"entry":[{"name":"x86_64"},{"name":"i586"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK\n\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":404,"details":"404 project '<project_name>' has no repository '<repository_name>'","summary":"project '<project_name>' has no repository '<repository_name>'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"List of all architectures the specified project builds against a given repository.","tags":["Build"]}},"/build/{project_name}/{repository_name}/_buildconfig":{"get":{"description":"Show the build configuration for the specified repository. Includes all base package requirements, mappings and macros.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"}],"responses":{"200":{"content":{"text/plain":{"example":"%define _project home:Admin\n\n### from openSUSE.org:openSUSE:Leap:15.2\n%define _repository standard\n\nMacros:\n%vendor obs://build.some.where/home:Admin\n%_project home:Admin\n\n### from openSUSE.org:openSUSE:Leap:15.2\n\n%_repository standard\n:Macros\n\n\nRelease: <CI_CNT>.<B_CNT> spec:lp152.<CI_CNT>.<B_CNT>\n%define gcc_version 7\n\n# testing new cycle algorithm\nBuildFlags: genmetaalgo:1\n\n# abort the build if the log file didn't move in an hour (seen in libreoffice builds)\nBuildFlags: logidlelimit:3600\n\nPublishFlags: ympdist:openSUSE%20Leap%2015.2\n\n# Help with the switch to the gcc7 provided libs\nPrefer: -libstdc++6-gcc7 -libtsan0-gcc7 -libgomp1-gcc7 -libgcc_s1-gcc7 -libatomic1-gcc7 -libcilkrts5-gcc7 -libitm1-gcc7\nPrefer: -liblsan0-gcc7 -libmpx2-gcc7 -libubsan0-gcc7\n"}},"description":"OK"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"Show the build configuration for the specified repository.","tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/_builddepinfo":{"get":{"description":"Show the build dependencies of packages that are part of the project, for a given repository and architecture.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"description":"Name of the package. Limit results to the specified package.","example":"obs-server","in":"query","name":"package","schema":{"type":"string"}},{"description":"* `pkgnames`: Show whole package dependencies, instead of individual binaries.\n* `revpkgnames`: Show which packages depend on the provided project/package for\n  the given repository/architecture, and therefore a rebuild gets triggered on change.\n* `order`: Show packages ordered by dependencies.\n","in":"query","name":"view","schema":{"enum":["pkgnames","revpkgnames","order"],"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"package":{"items":{"properties":{"name":{"example":"memcached","type":"string","xml":{"attribute":true}},"pkgdep":{"items":{"example":["gzip","obs-server"],"type":"string"},"type":"array"},"source":{"example":"memcached","type":"string"},"subpkg":{"items":{"example":["memcached-devel","memcached-debugsource"],"type":"string"},"type":"array"}},"type":"object"},"type":"array"}},"type":"object","xml":{"name":"builddepinfo"}}}},"description":"OK"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"Show the build dependencies of packages that are part of the project.","tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/_repository":{"get":{"description":"List all binaries (produced by all packages of the given project) for the specified repository and architecture.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"binary":{"items":{"properties":{"filename":{"example":"hello-2.10-3.1.x86_64.rpm","type":"string","xml":{"attribute":true}},"mtime":{"example":"1617270174","type":"string","xml":{"attribute":true}},"size":{"example":"58352","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"}},"type":"object","xml":{"name":"binarylist"}}}},"description":"OK."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"List all binaries (produced by all packages of the given project).","tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}":{"get":{"description":"List binaries built by the sources of the specified package.","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"description":"Package name","example":"ctris","in":"path","name":"package_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1_repository/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"List binaries built by the sources of the specified package.","tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}/_buildinfo":{"get":{"description":"This endpoint returns information about some specific artifact","operationId":"getBuildProjectRepositoryArchPackageBuildinfo","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D/get/parameters/3"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"arch":{"example":"i586","type":"string"},"bcnt":{"example":"2","type":"string"},"bdep":{"properties":{"arch":{"example":"i586","type":"string","xml":{"attribute":true}},"name":{"example":"liblua5_4-5","type":"string","xml":{"attribute":true}},"notmeta":{"example":"1","type":"string","xml":{"attribute":true}},"preinstall":{"example":"1","type":"string","xml":{"attribute":true}},"project":{"example":"openSUSE.org:openSUSE:Tumbleweed","type":"string","xml":{"attribute":true}},"release":{"example":"3.1","type":"string","xml":{"attribute":true}},"repository":{"example":"dod","type":"string","xml":{"attribute":true}},"version":{"example":"5.4.2","type":"string","xml":{"attribute":true}}},"type":"object"},"debuginfo":{"example":0,"type":"integer"},"file":{"example":"ctris.spec","type":"string"},"package":{"example":"ctris","type":"string","xml":{"attribute":true}},"path":{"x-project":{"example":"home:Admin","type":"string","xml":{"attribute":true}},"x-repository":{"example":"openSUSE_Tumbleweed","type":"string","xml":{"attribute":true}}},"project":{"example":"home:Admin","type":"string","xml":{"attribute":true}},"release":{"example":"3.2","type":"string"},"repository":{"example":"openSUSE_Tumbleweed","type":"string","xml":{"attribute":true}},"rev":{"example":3,"type":"integer"},"specfile":{"example":"ctris.spec","type":"string"},"srcmd5":{"example":"6b7c8d9cb5c5d36453c1dc8e102016b1","type":"string"},"subpack":{"example":"ctris","type":"string"},"verifymd5":{"example":"6b7c8d9cb5c5d36453c1dc8e102016b1","type":"string"},"versrel":{"example":"0.42.1-3","type":"string"}},"type":"object","xml":{"name":"buildinfo"}}}},"description":"Returns the artifact building information."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"unknown_project","summary":"Project not found: 1"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Error: Not Found\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}/_history":{"get":{"description":"This endpoint returns the build history for a specific artifact","operationId":"getBuildProjectRepositoryArchPackageHistory","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D/get/parameters/3"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"entry":{"properties":{"bcnt":{"example":"1","type":"string","xml":{"attribute":true}},"duration":{"example":"222","type":"string","xml":{"attribute":true}},"rev":{"example":"4","type":"string","xml":{"attribute":true}},"srcmd5":{"example":"63a6f075d3d420c6c1160a7b5dc31354","type":"string","xml":{"attribute":true}},"time":{"example":"1617812788","type":"string","xml":{"attribute":true}},"versrel":{"example":"0.42.1-4","type":"string","xml":{"attribute":true}}},"type":"object"}},"type":"object","xml":{"name":"buildhistory"}}}},"description":"Returns ok when the build status is ok"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"unknown_project","summary":"Project not found: 1"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Error: Not Found\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}/_jobstatus":{"get":{"description":"Show the build status of a currently running build job. Shows an empty result if no build job is running.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D/get/parameters/3"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"code":{"example":"building","type":"string","xml":{"attribute":true}},"hostarch":{"example":"x86_64","type":"string"},"jobid":{"example":"17c8d25b92da67f6ec428ea51a9b5342","type":"string"},"lastduration":{"example":"43","type":"string"},"starttime":{"example":"1618222900","type":"string"},"uri":{"example":"http://172.18.0.5:38963","type":"string"}},"type":"object","xml":{"name":"jobstatus"}}}},"description":"OK.\n\nXML Schema used for body validation: [jobstatus.rng](../schema/jobstatus.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"Show the build status of a currently running build job.","tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}/_log":{"get":{"description":"This endpoint returns the last log file for a specific build artifact","operationId":"getBuildProjectRepositoryArchPackageLog","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D/get/parameters/3"}],"responses":{"200":{"content":{"text/plain":{"example":"[    0s] Memory limit set to 23077696KB\n[    0s] Using BUILD_ROOT=/var/cache/obs/worker/root_2\n[    0s] Using BUILD_ARCH=i586:i486:i386\n[    0s] \n[    0s] \n[    0s] 5d0262043f4a started \"build ctris.spec\" at Tue Apr  6 12:27:31 UTC 2021.\n[    0s] \n[    0s] Building ctris for project 'home:Admin' repository 'openSUSE_Tumbleweed' arch 'i586' srcmd5 '6b7c8d9cb5c5d36453c1dc8e102016b1'\n"}},"description":"This endpoint returns the log file content\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"download_binary_no_permission","summary":"No permission to download binaries from package ctris, project home:Admin"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Error: Not Acceptable\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"unknown_project","summary":"Project not found: 1"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Error: Not Found\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}/_reason":{"get":{"description":"Details about the reason of the lastly triggered build.","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D/get/parameters/3"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"explain":{"example":"source change","type":"string"},"oldsource":{"example":"da9ebc6a12b6da45f9ead3fc2f924889","type":"string"},"time":{"example":"1617982407","type":"string"}},"type":"object","xml":{"name":"reason"}}}},"description":"OK"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"Show the reason for the lastly triggered build.","tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}/_status":{"get":{"description":"This endpoint returns the building status for a specific artifact","operationId":"getBuildProjectRepositoryArchPackageStatus","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D/get/parameters/3"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"code":{"example":"failed","type":"string","xml":{"attribute":true}},"package":{"example":"ctris","type":"string","xml":{"attribute":true}}},"type":"object","xml":{"name":"status"}}}},"description":"Returns ok when the build status is ok"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"unknown_project","summary":"Project not found: 1"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Error: Not Found\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}/{file_name}":{"get":{"description":"Given a project, repository, architecture and package, retrieve the given file's content.\n","operationId":"getBuildProjectRepositoryArchitecturePackageFile","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D/get/parameters/3"},{"description":"The file name","example":"ctris-0.42.1-4.1.x86_64.rpm","in":"path","name":"file_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/*":{"schema":{"format":"binary","type":"string"}}},"description":"Returns the artifact's actual file contents"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"404","details":"404 project 'home:Admin' has no repository '4'","summary":"project 'home:Admin' has no repository '4'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Error: Not Found\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Return a specific artifact file contents","tags":["Build"]},"put":{"description":"Given a project, repository, architecture and package, update the given file's content.\n\nThis is for Admins only.\n","operationId":"putBuildProjectRepositoryArchitecturePackageFile","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"description":"Package name","in":"path","name":"package_name","required":true,"schema":{"items":{"enum":["_repository"],"type":"string"},"type":"array"}},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D~1%7Bfile_name%7D/get/parameters/4"}],"requestBody":{"content":{"plain/text":{"schema":{"properties":{"file":{"format":"binary","type":"string"}},"type":"string"}}}},"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"code":"ok"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Updates the artifact's file contents"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"upload_binary_no_permission","summary":"No permission to upload binaries."},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"No permission to upload binaries for this project\n"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"404","details":"404 project 'home:Admin' has no repository '4'","summary":"project 'home:Admin' has no repository '4'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Error: Not Found\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Update a specific artifact file contents","tags":["Build"]}},"/build/{project_name}/{repository_name}/{architecture_name}/{package_name}/{file_name}?view=fileinfo":{"get":{"description":"Given a project, repository, architecture and package, retrieve the given artifact's details.\n","operationId":"getBuildProjectRepositoryArchitecturePackageFileViewFileinfo","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D/get/parameters/3"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bpackage_name%7D~1%7Bfile_name%7D/get/parameters/4"},{"in":"query","name":"view","required":true,"schema":{"items":{"enum":["fileinfo","fileinfo_ext"],"type":"string"},"type":"array"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"examples":{"fileinfo":{"summary":"view=fileinfo","value":{"arch":"x86_64","description":"ctris is a colorized, small and flexible Tetris(TM)-clone for the console. Go play!","filename":"ctris-0.42.1-4.1.x86_64.rpm","mtime":"1617270174","name":"ctris","provides":["ctris = 0.42.1-6.2","ctris(x86-64) = 0.42.1-6.2"],"release":"4.1","requires":["libc.so.6()(64bit)","libc.so.6(GLIBC_2.2.5)(64bit)"],"size":"765725","summary":"Console based tetris clone","version":"0.42.1"}},"fileinfo_ext":{"summary":"view=fileinfo_ext","value":{"arch":"x86_64","description":"ctris is a colorized, small and flexible Tetris(TM)-clone for the console. Go play!","filename":"ctris-0.42.1-4.2.x86_64.rpm","mtime":"1617270174","name":"ctris","provides":["ctris = 0.42.1-6.2","ctris(x86-64) = 0.42.1-6.2"],"provides_ext":{"dep":"ctris(x86-64) = 0.42.1-6.2"},"release":"4.1","requires":["libc.so.6()(64bit)","libc.so.6(GLIBC_2.2.5)(64bit)"],"requires_ext":{"dep":"libc.so.6()(64bit)","provided_by":{"arch":"x86_64","name":"glibc","project":"openSUSE.org:openSUSE:Tumbleweed","release":"4.1","repository":"dod","version":"2.33"}},"size":"765725","source":"ctris","summary":"Console based tetris clone","version":"0.42.1"}}},"schema":{"properties":{"arch":{"type":"string"},"description":{"type":"string"},"filename":{"type":"string","xml":{"attribute":true}},"mtime":{"type":"string"},"name":{"type":"string"},"provides":{"items":{"type":"string"},"type":"array"},"provides_ext":{"items":{"properties":{"dep":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"release":{"type":"string"},"requires":{"items":{"type":"string"},"type":"array"},"requires_ext":{"items":{"properties":{"dep":{"type":"string","xml":{"attribute":true}},"provided_by":{"properties":{"arch":{"type":"string","xml":{"attribute":true}},"name":{"type":"string","xml":{"attribute":true}},"project":{"type":"string","xml":{"attribute":true}},"release":{"type":"string","xml":{"attribute":true}},"repository":{"type":"string","xml":{"attribute":true}},"version":{"type":"string","xml":{"attribute":true}}},"type":"object"}},"type":"object"},"type":"array"},"size":{"type":"string"},"source":{"type":"string"},"summary":{"type":"string"},"version":{"type":"string"}},"type":"object","xml":{"name":"fileinfo"}}}},"description":"Returns details about the artifact"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"404","details":"404 project 'home:Admin' has no repository '4'","summary":"project 'home:Admin' has no repository '4'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Error: Not Found\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"This endpoint returns details about an specific artifact","tags":["Build"]}},"/configuration":{"get":{"description":"Display the configuration of this Open Build Service instance.\n","responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"admin_email":{"example":"unconfigured@openbuildservice.org","type":"string"},"allow_user_to_create_home_project":{"example":"on","type":"string"},"anonymous":{"example":"on","type":"string"},"change_password":{"example":"on","type":"string"},"cleanup_empty_projects":{"example":"on","type":"string"},"default_access_disabled":{"example":"off","type":"string"},"description":{"example":"The openSUSE Build Service is the public instance of the Open Build Service (OBS)","type":"string"},"disable_publish_for_branches":{"example":"on","type":"string"},"disallow_group_creation":{"example":"off","type":"string"},"download_on_demand":{"example":"on","type":"string"},"enforce_project_keys":{"example":"off","type":"string"},"gravatar":{"example":"on","type":"string"},"hide_private_options":{"example":"off","type":"string"},"name":{"example":"private","type":"string"},"obs_url":{"example":"https://unconfigured.openbuildservice.org","type":"string"},"registration":{"example":"allow","type":"string"},"schedulers":{"properties":{"arch":{"example":["armv7l","i586","x86_64"],"items":{"type":"string"},"type":"array"}},"type":"object"},"title":{"example":"Open Build Service","type":"string"},"tos_url":{"example":"https://en.opensuse.org/Terms_of_site","type":"string"},"unlisted_projects_filter":{"example":"^home:.+","type":"string"},"unlisted_projects_filter_description":{"example":"home projects","type":"string"}},"type":"object","xml":{"name":"configuration"}}}},"description":"OK. The request has succeeded.\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Display the configuration of this Open Build Service instance","tags":["Configuration"]},"put":{"description":"Update the configuration of this Open Build Service instance.\n\nThis is for admins only.\n","requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1configuration/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Configuration definition."},"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1configuration/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"no_permission_to_change","summary":"The api has a different value for default_access_disabled configured in options.yml file. Remove it there first"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Forbidden.\n\nIn the example below, _default_access_disabled_ is one of the possible configuration options which is set in the options.yml file.\n"}},"security":[{"basic_authentication":[]}],"summary":"Update the configuration of this Open Build Service instance","tags":["Configuration"]}},"/distributions":{"get":{"description":"List all distributions that can be build against.\nThis will not list distributions that are available via [interconnect](https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.concepts.html#id-1.5.10.3.5).\nCheck /distributions/include_remotes for this.\n","responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"distribution":[{"architecture":["i586","x86_64"],"icon":[{"height":8,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":8},{"height":16,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":16}],"id":16626,"link":"http://www.opensuse.org/","name":"openSUSE Tumbleweed","project":"openSUSE:Factory","reponame":"openSUSE_Tumbleweed","repository":"snapshot","vendor":"opensuse","version":"Tumbleweed"},{"architecture":"x86_64","icon":[{"height":8,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":8},{"height":16,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":16}],"id":16629,"link":"http://www.opensuse.org/","name":"openSUSE Leap 15.3","project":"openSUSE:Leap:15.3","reponame":"openSUSE_Leap_15.3","repository":"standard","vendor":"openSUSE","version":"15.3"},{"architecture":["i586","x86_64"],"icon":[{"height":8,"url":"https://static.opensuse.org/distributions/logos/fedora.png","width":8},{"height":16,"url":"https://static.opensuse.org/distributions/logos/fedora.png","width":16}],"id":16731,"link":"http://www.fedoraproject.org/","name":"Fedora 33","project":"Fedora:33","reponame":"Fedora_33","repository":"standard","vendor":"Fedora","version":"33"}]},"schema":{"properties":{"distribution":{"items":{"properties":{"architecture":{"example":["i586","x86_64"],"items":{"type":"string"},"type":"array"},"icon":{"example":[{"height":8,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":8},{"height":16,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":16}],"items":{"properties":{"height":{"type":"integer","xml":{"attribute":true}},"url":{"type":"string","xml":{"attribute":true}},"width":{"type":"integer","xml":{"attribute":true}}},"type":"object"},"type":"array"},"id":{"example":16626,"type":"integer","xml":{"attribute":true}},"link":{"example":"http://www.opensuse.org/","type":"string"},"name":{"example":"openSUSE Tumbleweed","type":"string"},"project":{"example":"openSUSE:Factory","type":"string"},"reponame":{"example":"openSUSE_Tumbleweed","type":"string"},"repository":{"example":"snapshot","type":"string"},"vendor":{"example":"opensuse","type":"string","xml":{"attribute":true}},"version":{"example":"Tumbleweed","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"}},"type":"object","xml":{"name":"distributions"}}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [distributions.rng](../schema/distributions.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"List all distributions.","tags":["Distributions"]},"post":{"description":"Create a distribution.\n\nThis is only for admins.\n","requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"architecture":{"example":["i586","x86_64"],"items":{"type":"string"},"type":"array"},"icon":{"example":[{"height":8,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":8},{"height":16,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":16}],"items":{"properties":{"height":{"type":"integer","xml":{"attribute":true}},"url":{"type":"string","xml":{"attribute":true}},"width":{"type":"integer","xml":{"attribute":true}}},"type":"object"},"type":"array"},"id":{"example":16626,"type":"integer","xml":{"attribute":true}},"link":{"example":"http://www.opensuse.org/","type":"string"},"name":{"example":"openSUSE Tumbleweed","type":"string"},"project":{"example":"openSUSE:Factory","type":"string"},"reponame":{"example":"openSUSE_Tumbleweed","type":"string"},"repository":{"example":"snapshot","type":"string"},"vendor":{"example":"opensuse","type":"string","xml":{"attribute":true}},"version":{"example":"Tumbleweed","type":"string","xml":{"attribute":true}}},"type":"object","xml":{"name":"distribution"}}}},"description":"Distribution definition"},"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"distribution":[{"architecture":["i586","x86_64"],"icon":[{"height":8,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":8},{"height":16,"url":"https://static.opensuse.org/distributions/logos/opensuse.png","width":16}],"id":16626,"link":"http://www.opensuse.org/","name":"openSUSE Tumbleweed","project":"openSUSE:Factory","reponame":"openSUSE_Tumbleweed","repository":"snapshot","vendor":"opensuse","version":"Tumbleweed"}]},"schema":{"$ref":"#/paths/~1distributions/post/requestBody/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [distribution.rng](../schema/distribution.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Create a distribution.","tags":["Distributions"]}},"/distributions/bulk_replace":{"put":{"description":"Bulk replace all distributions.\n\nThis is only for admins.\n","requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1distributions/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Distributions definition"},"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"code":"ok","summary":"Ok"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The Request has succeeded.\n\nXML Schema used for body validation: [distributions.rng](../schema/distributions.rng)\n"},"400":{"content":{"application/xml; charset=utf-8":{"example":{"code":"validation_failed","summary":"distributions validation error: 40:0: ERROR: Expecting an element name, got nothing"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad Request."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Bulk replace all distributions.","tags":["Distributions"]}},"/distributions/include_remotes":{"get":{"description":"List all distributions that can be build against, including the ones provided by the interconnect.\n","responses":{"200":{"$ref":"#/paths/~1distributions/get/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"List all distributions including remote.","tags":["Distributions"]}},"/distributions/{distribution_id}":{"delete":{"description":"Delete a distribution.\n\nThis is only for admins.\n","parameters":[{"$ref":"#/paths/~1distributions~1%7Bdistribution_id%7D/get/parameters/0"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"code":"ok","summary":"Ok"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeded.\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Distribution with 'id'=0"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not found."}},"security":[{"basic_authentication":[]}],"summary":"Delete a distribution.","tags":["Distributions"]},"get":{"description":"Show a distribution that can be build against.\n","parameters":[{"description":"The id of the distribution","example":16626,"in":"path","name":"distribution_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1distributions/post/requestBody/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeded.\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Distribution with 'id'=0"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not found."}},"security":[{"basic_authentication":[]}],"summary":"Show a distribution.","tags":["Distributions"]},"put":{"description":"Update the data of a distribution.","parameters":[{"$ref":"#/paths/~1distributions~1%7Bdistribution_id%7D/get/parameters/0"}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1distributions/post/requestBody/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Distribution definition"},"responses":{"200":{"description":"OK. The Request has succeeded.\n\nXML Schema used for body validation: [distribution.rng](../schema/distribution.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Distribution with 'id'=0"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not found."}},"security":[{"basic_authentication":[]}],"summary":"Update a distribution.","tags":["Distributions"]}},"/group":{"get":{"description":"List available groups.","responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"count":"2","entry":[{"name":"group-admin"},{"name":"group-test"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"List available groups.","tags":["Groups"]}},"/group/{group_title}":{"delete":{"description":"Delete a group.","parameters":[{"$ref":"#/paths/~1group~1%7Bgroup_title%7D/get/parameters/0"}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Group 'group-testd'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Delete a group.","tags":["Groups"]},"get":{"description":"Read group data.","parameters":[{"description":"Group title","example":"group-test","in":"path","name":"group_title","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"maintainer":{"items":{"properties":{"userid":{"example":"user-test","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"person":{"items":{"properties":{"userid":{"example":"user-test","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array","xml":{"wrapped":true}},"title":{"example":"group-test","type":"string"}},"type":"object","xml":{"name":"group"}}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [group.rng](../schema/group.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Group 'group-testd'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Read group data.","tags":["Groups"]},"post":{"description":"Modify group data.","parameters":[{"$ref":"#/paths/~1group~1%7Bgroup_title%7D/get/parameters/0"},{"description":"Command to be executed. It takes one of these available values:\n* `add_user`: add a user to a group. `userid` query parameter must be also used.\n* `remove_user`: remove a user from a group. `userid` query parameter must be also used.\n* `set_email`: set email adress of group. `email` query parameter must be also used.\n","in":"query","name":"cmd","schema":{"enum":["add_user","remove_user","set_email"],"type":"string"}},{"description":"User login. Used with `cmd=add_user` or `cmd=remove_user`.","in":"query","name":"userid","schema":{"type":"string"}},{"description":"Group email. Used with `cmd=set_email`.","in":"query","name":"email","schema":{"type":"string"}}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"example":{"code":"bad_request","summary":"cmd must be set to add_user or remove_user"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad Request."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"group_not_found":{"summary":"Group Not Found","value":{"code":"not_found","summary":"Couldn't find Group 'group-testd'"}},"user_not_found":{"summary":"User Not Found","value":{"code":"not_found","summary":"Couldn't find User with login = user_test"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Modify group data.","tags":["Groups"]},"put":{"description":"Write group data.","parameters":[{"$ref":"#/paths/~1group~1%7Bgroup_title%7D/get/parameters/0"}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1group~1%7Bgroup_title%7D/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Group definition.\n\nXML Schema used for body validation: [group.rng](../schema/group.rng)\n","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Group 'group-testd'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Write group data.","tags":["Groups"]}},"/issue_trackers":{"get":{"description":"Get the list of issue trackers.","responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"items":{"properties":{"description":{"example":"openSUSE Feature Database","type":"string"},"enable-fetch":{"example":"false","type":"string"},"kind":{"example":"fate","type":"string"},"label":{"example":"fate#@@@","type":"string"},"name":{"example":"fate","type":"string"},"regex":{"example":"(?:fate|Fate|FATE)\\s*#\\s*(\\d+)","type":"string"},"show-url":{"example":"https://features.opensuse.org/@@@","type":"string"},"url":{"example":"https://features.opensuse.org/","type":"string"}},"type":"object","xml":{"name":"issue-tracker"}},"type":"array","xml":{"name":"issue-trackers","wrapped":true}}}},"description":"List of issue trackers.\n\nXML Schema used for body validation: [issue_trackers.rng](../schema/issue_trackers.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Get the list of issue trackers.","tags":["Issue Trackers"]},"post":{"description":"Create an issue tracker.","requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1issue_trackers/get/responses/200/content/application~1xml;%20charset=utf-8/schema/items"}}},"description":"Issue tracker definition.\n\nXML Schema used for body validation: [issue_tracker.rng](../schema/issue_tracker.rng)\n","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"empty_body":{"summary":"Empty Body","value":{"code":"validation_failed","summary":"Document is empty, not allowed for issue_tracker"}},"wrong_xml_element":{"summary":"Wrong XML Element","value":{"code":"validation_failed","summary":"issue_tracker validation error: 1:0: ERROR: Expecting element issue-tracker, got foo"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Validation failed.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Create an issue tracker.","tags":["Issue Trackers"]}},"/issue_trackers/{issue_tracker_name}":{"delete":{"description":"Delete an issue tracker.","parameters":[{"$ref":"#/paths/~1issue_trackers~1%7Bissue_tracker_name%7D/get/parameters/0"}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Unable to find issue tracker 'foo'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Delete an issue tracker.","tags":["Issue Trackers"]},"get":{"description":"Show an issue tracker.","parameters":[{"description":"Issue tracker name","example":"fate","in":"path","name":"issue_tracker_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1issue_trackers/get/responses/200/content/application~1xml;%20charset=utf-8/schema/items"}}},"description":"Issue tracker definition.\n\nXML Schema used for body validation: [issue_tracker.rng](../schema/issue_tracker.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Unable to find issue tracker 'foo'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Show an issue tracker.","tags":["Issue Trackers"]},"put":{"description":"Update the issue tracker given as path parameter. If it is not found, create it.","parameters":[{"$ref":"#/paths/~1issue_trackers~1%7Bissue_tracker_name%7D/get/parameters/0"}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1issue_trackers/get/responses/200/content/application~1xml;%20charset=utf-8/schema/items"}}},"description":"Issue tracker definition.\n\nXML Schema used for body validation: [issue_tracker.rng](../schema/issue_tracker.rng)\n","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"empty_body":{"summary":"Empty Body","value":{"code":"validation_failed","summary":"Document is empty, not allowed for issue_tracker"}},"wrong_xml_element":{"summary":"Wrong XML Element","value":{"code":"validation_failed","summary":"issue_tracker validation error: 1:0: ERROR: Expecting element issue-tracker, got foo"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Validation failed.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Update or create an issue tracker.","tags":["Issue Trackers"]}},"/issue_trackers/{issue_tracker_name}/issues/{issue_name}":{"get":{"description":"Show an issue of an issue tracker.","parameters":[{"$ref":"#/paths/~1issue_trackers~1%7Bissue_tracker_name%7D/get/parameters/0"},{"description":"Issue name.","example":12345,"in":"path","name":"issue_name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"created_at":{"example":"2021-01-18 19:17:51 UTC","type":"string"},"label":{"example":"fate#12345","type":"string"},"name":{"example":12345,"type":"string"},"tracker":{"example":"fate","type":"string"},"updated_at":{"example":"2021-01-18 19:17:51 UTC","type":"string"},"url":{"example":"https://features.opensuse.org/12345","type":"string"}},"type":"object","xml":{"name":"issue"}}}},"description":"Issue definition.\n\nXML Schema used for body validation: [issue.rng](../schema/issue.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"issue_tracker_not_found","summary":"Error: Issue Tracker 'foo' not found."},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Show an issue of an issue tracker.","tags":["Issue Trackers"]}},"/person":{"get":{"description":"List all people.\n","parameters":[{"description":"A prefix to filter the people to look for","example":"Adm","in":"query","name":"prefix","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"count":"9","entry":[{"name":"Admin"},{"name":"_nobody_"},{"name":"Iggy"},{"name":"user_1"},{"name":"repo-checker"},{"name":"reviewhero"},{"name":"user_2"},{"name":"user_3"},{"name":"Requestor"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"List all people.","tags":["Person"]},"post":{"description":"Allows executing command on the person endpoint.\n\nAs of now, the only command allowed is 'register'.\n","parameters":[{"description":"The command to execute","example":"register","in":"query","name":"cmd","required":true,"schema":{"enum":["register"],"type":"string"}}],"requestBody":{"content":{"application/xml":{"schema":{"properties":{"email":{"example":"janedoe@example.com","type":"string"},"login":{"example":"jane","type":"string"},"note":{"example":"Jane works in the Engineering team","type":"string"},"password":{"example":"superpassword123","type":"string"},"realname":{"example":"Jane Doe","type":"string"},"state":{"example":"confirmed","type":"string"}},"type":"object","xml":{"name":"unregisteredperson"}}}},"description":"The data for the person to register.","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"Bad Request":{"value":{"code":"err_register_save","summary":"Could not save the registration, details: Login is the name of an already existing user and Password can't be blank."}},"Unknown Command":{"value":{"code":"unknown_command","summary":"Allowed command is 'register'."}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad request.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"summary":"Executes a command on the person endpoint.","tags":["Person"]}},"/person/register":{"post":{"requestBody":{"content":{"application/xml":{"schema":{"$ref":"#/paths/~1person/post/requestBody/content/application~1xml/schema"}}},"description":"Data for the person to register.","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"permission_denied","summary":"User accounts can not be registered via OBS when in LDAP mode. Please refer\nto your LDAP server to create new users.\n"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Forbidden"}},"summary":"Registers a new person","tags":["Person"]}},"/person/{login}":{"get":{"parameters":[{"description":"Person login.","example":"Admin","in":"path","name":"login","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"email":"root@localhost","globalrole":"Admin","ignore_auth_services":false,"login":"Admin","realname":"OBS Instance Superuser","state":"confirmed","watchlist":[{"project":{"name":"home:Admin"}}]},"schema":{"properties":{"email":{"example":"unconfigured@openbuildservice.org","type":"string"},"globalrole":{"type":"string"},"ignore_auth_services":{"type":"boolean"},"login":{"example":"user_1","type":"string"},"realname":{"example":"User1","type":"string"},"state":{"example":"confirmed","type":"string"},"watchlist":{"items":{"properties":{"project":{"properties":{"name":{"type":"string","xml":{"attribute":true}}},"type":"object"}},"type":"object"},"type":"array","xml":{"name":"watchlist"}}},"type":"object","xml":{"name":"person"}}}},"description":"OK. The request has succeeded.\nXML Schema used for body validation: [user.rng](../schema/user.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find User with login = <login>"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not found.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Get details about a person","tags":["Person"]},"post":{"parameters":[{"$ref":"#/paths/~1person~1%7Blogin%7D/get/parameters/0"},{"description":"The command to execute against the provided person.","example":"change_password","in":"query","name":"cmd","required":true,"schema":{"enum":["change_password","lock","delete"],"type":"string"}}],"requestBody":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"The password in plain text when the cmd param is 'change_password'.","required":false},"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\nXML Schema used for body validation: [api_response.xsd](../schema/api_response.xsd)\n"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"Bad Request":{"value":{"code":"err_register_save","summary":"Could not save the registration, details: Login is the name of an already existing user and Password can't be blank."}},"Unknown Command":{"value":{"code":"unknown_command","summary":"Allowed commands are '<some command>'."}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad request.\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"examples":{"update_user_not_authorized":{"value":{"code":"update_user_not_authorized","summary":"You are not authorized to update this User."}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Forbidden.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"404":{"$ref":"#/paths/~1person~1%7Blogin%7D/get/responses/404"}},"security":[{"basic_authentication":[]}],"summary":"Perform changes on a registered person","tags":["Person"]},"put":{"parameters":[{"$ref":"#/paths/~1person~1%7Blogin%7D/get/parameters/0"}],"requestBody":{"content":{"application/xml":{"schema":{"$ref":"#/paths/~1person/post/requestBody/content/application~1xml/schema"}}},"description":"The new data for the person referred in the login parameter.","required":true},"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"examples":{"Subaccount chaining":{"value":{"code":"subaccount_chaining","summary":"A subaccount can not be assigned to subaccount <login>"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad request.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"examples":{"Change user info not permitted":{"value":{"code":"change_userinfo_no_permission","summary":"no permission to change userinfo for user <login>"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Unauthorized.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"password_empty","summary":"Requested non-existing user"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not found.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Update person","tags":["Person"]}},"/person/{login}/group":{"get":{"description":"List the groups the person belongs to.","parameters":[{"$ref":"#/paths/~1person~1%7Blogin%7D/get/parameters/0"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"count":"2","entry":[{"name":"factory-maintainers"},{"name":"obs-developers"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find User with login = fake"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"List the groups of a person","tags":["Person"]}},"/person/{login}/token":{"get":{"description":"List the authentication tokens of a person.","parameters":[{"$ref":"#/paths/~1person~1%7Blogin%7D/get/parameters/0"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"count":2,"entry":[{"id":3,"kind":"rss","string":"FK49K39DKK"},{"id":25,"kind":"release","package":"ghcz","project":"devel:languages:haskell","string":"4T04JGI691"}]},"schema":{"properties":{"count":{"type":"integer","xml":{"attribute":true}},"entry":{"items":{"properties":{"id":{"type":"string","xml":{"attribute":true}},"kind":{"type":"string","xml":{"attribute":true}},"package":{"type":"string","xml":{"attribute":true}},"project":{"type":"string","xml":{"attribute":true}},"string":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"}},"type":"object","xml":{"name":"directory"}}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [tokenlist.rng](../schema/tokenlist.rng)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"view_user_not_authorized","summary":"You are not authorized to view this User."},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Forbidden.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"List the authentication tokens of a person.","tags":["Person"]},"post":{"description":"Create a new authentication token for a person.\n\nThe token may be limited to a specific package. In this case the query parameters\n`project` and `package` should be provided.\n\nWith an empty request body, a token of the default kind 'runservice' is created.\n","parameters":[{"$ref":"#/paths/~1person~1%7Blogin%7D/get/parameters/0"},{"description":"Project name. Should be provided, together with the package query parameter,\nto limit the token to a specific package.\n","example":"home:hans","in":"query","name":"project","schema":{"type":"string"}},{"description":"Package name. Should be provided, together with the project query parameter,\nto limit the token to a specific package.\n","example":"gchz","in":"query","name":"package","schema":{"type":"string"}},{"description":"Operation indicates the kind of token that is going to be created.\n\nWhen operation is not specified, 'runservice' is the default value.\n","example":"runservice","in":"query","name":"operation","schema":{"enum":["runservice","rebuild","release"],"type":"string"}},{"description":"**(Beta/Unstable)**\n\nSCM token used in OBS workflows to report back the workflow status, when the operation is workflow.\n\nIt's normally possible to generate SCM tokens directly on the SCM's website like GitHub or GitLab.\n","example":"ghp_fake_token_123","in":"query","name":"scm_token","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"code":"ok","data":["i6iF4M5cn",5],"summary":"Ok"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n\n**NOTE:** This is an example of a valid response. It should include the attribute 'name'\nin every 'data' tag, which is missing in the example using the schema.\n```\n  <status code=\"ok\">\n    <summary>Ok</summary>\n    <data name=\"token\">i6iF4M5cn</data>\n    <data name=\"id\">5</data>\n  </status>\n```\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"update_user_not_authorized","summary":"You are not authorized to update this User."},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Forbidden.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"security":[{"basic_authentication":[]}],"summary":"Create a new authentication token for a person.","tags":["Person"]}},"/person/{login}/token/{id}":{"delete":{"description":"Delete a token of the specified person.","parameters":[{"$ref":"#/paths/~1person~1%7Blogin%7D/get/parameters/0"},{"description":"Id of the token to be removed.","example":3,"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"code":"ok","summary":"Ok"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"update_user_not_authorized","summary":"You are not authorized to update this User."},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Forbidden.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Token with 'id'=33 [WHERE `tokens`.`user_id` = ?]"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"}},"summary":"Delete a token of a person.","tags":["Person"]}},"/published":{"get":{"description":"Get a list of all the projects, all of them are considered published.\n","responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"entry":[{"name":"OBS:Server:Unstable"},{"name":"devel:languages:ruby"},{"name":"openSUSE:Maintenance:9810"},{"name":"zypp:plugins"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"List all the published projects.","tags":["Published Binaries"]}},"/published/{project_name}":{"get":{"description":"Get a list of the repositories of the project that already have published binaries.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"entry":[{"name":"SLE_15_SP3"},{"name":"containers"},{"name":"images"},{"name":"openSUSE_15.2"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"download_binary_no_permission","summary":"No permission for binaries from project home:Admin"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Forbidden.\n\nXML Schema used for body validation: [status.xsd](../schema/status.xsd)\n"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Project"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"List the repositories of a project with published binaries","tags":["Published Binaries"]}},"/published/{project_name}/{repository_name}":{"get":{"description":"Get a list of architectures' directories and other files (.repo, .ymp, etc.) present at the level project/repository of the directory tree where the published binaries are stored.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"entry":[{"name":"OBS:Server:Unstable.repo"},{"name":"OBS_Server.ymp"},{"name":"aarch64"},{"name":"x86_64"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"$ref":"#/paths/~1published~1%7Bproject_name%7D/get/responses/403"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Project"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"List the content of the directory tree where the binaries are published at the level project/repository.","tags":["Published Binaries"]}},"/published/{project_name}/{repository_name}/{architecture_name}":{"get":{"description":"Get a list of binaries and other files present at the level project/repository/architecture of the directory tree as a result of successful building and publishing processes.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"entry":[{"name":"apache2-mod_auth_memcookie-1.1.1-lp152.2.1.x86_64.rpm"},{"name":"obs-api-testsuite-rspec-2.11~alpha.20200618T200341.d42d8310aa-lp152.10515.1.x86_64.rpm"}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK. The request has succeeded."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"$ref":"#/paths/~1published~1%7Bproject_name%7D/get/responses/403"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Project"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"List the content of the directory tree where the binaries are published at the level project/repository/architecture.","tags":["Published Binaries"]}},"/published/{project_name}/{repository_name}/{architecture_name}/{binary_filename}":{"get":{"description":"Allow to download the binary file that was published and stored under the directory given by project/repository/architecture/.\nCan response with Media Types like application/x-rpm, text/xml, etc.\nNOTE: Use this only if you absolutely have to, as it doesn't use the redirector.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"description":"Binary filename","example":"ctris-0.42.1-8.1.x86_64.rpm","in":"path","name":"binary_filename","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/*":{"schema":{"format":"binary","type":"string"}},"text/xml":{"schema":{"format":"binary","type":"string"}}},"description":"OK"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"$ref":"#/paths/~1published~1%7Bproject_name%7D/get/responses/403"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"NoSuchFile":{"value":{"code":404,"details":"404 no such file","summary":"no such file"}},"NotFound":{"value":{"code":"not_found","summary":"Couldn't find Project"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Return the binary file itself.","tags":["Published Binaries"]}},"/published/{project_name}/{repository_name}/{architecture_name}/{binary_filename}?view=ymp":{"get":{"description":"Generate a ymp pattern, which contains the list of packages needed for intalling certain software without having to create dependencies between them.\nRead more about patterns [in this tutorial](https://en.opensuse.org/openSUSE:Build_Service_Tutorial#Create_Patterns).\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"$ref":"#/paths/~1published~1%7Bproject_name%7D~1%7Brepository_name%7D~1%7Barchitecture_name%7D~1%7Bbinary_filename%7D/get/parameters/3"}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"group":{"distversion":"openSUSEsLeap 15.2","repositories":{"repository":[{"description":"These are the developer versions of the tools for the Open Build Service project","name":"OBS:Server:Unstable","recommended":true,"summary":"Developer versions of the Open Build Service Server","url":"https://download.opensuse.org/repositories/OBS:/Server:/Unstable/openSUSE_15.2"},{"description":"openSUSE Leap borrows packages from SLE for the base system","name":"openSUSE:Leap:15.2","recommended":false,"summary":"openSUSE Leap 15.2","url":"http://download.opensuse.org/distribution/leap/15.2/repo/oss"}]},"software":{"item":{"description":"This package provides debug information for package virt-v2v","name":"virt-v2v-debuginfo","summary":"Debug information for package virt-v2v"}}},"xmlns":"http://opensuse.org/Standards/One_Click_Install","xmlns:os":"http://opensuse.org/Standards/One_Click_Install"},"schema":{"properties":{"group":{"properties":{"distversion":{"type":"string","xml":{"attribute":true}},"repositories":{"properties":{"repository":{"items":{"properties":{"description":{"type":"string"},"name":{"type":"string"},"recommended":{"type":"string","xml":{"attribute":true}},"summary":{"type":"string"},"url":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"software":{"properties":{"item":{"properties":{"description":{"type":"string"},"name":{"type":"string"},"summary":{"type":"string"}},"type":"object"}},"type":"object"}},"type":"object"},"xmlns":{"type":"string","xml":{"attribute":true,"example":"http://opensuse.org/Standards/One_Click_Install"}},"xmlns:os":{"type":"string","xml":{"attribute":true,"example":"http://opensuse.org/Standards/One_Click_Install"}}},"type":"object","xml":{"name":"metapackage"}}}},"description":"OK."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"$ref":"#/paths/~1published~1%7Bproject_name%7D/get/responses/403"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find Project"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Generate a ymp pattern that includes the needed repositories to install the given binary.","tags":["Published Binaries"]}},"/published/{project_name}/{repository_name}?view=status":{"get":{"description":"Get information about the build process (build id, start time, etc.) for the pair project and repository.\n","parameters":[{"$ref":"#/paths/~1build~1%7Bproject_name%7D/get/parameters/0"},{"$ref":"#/paths/~1build~1%7Bproject_name%7D~1%7Brepository_name%7D/get/parameters/1"},{"description":"Set this parameter to status in order to get details about the last publication.","example":"status","in":"query","name":"view","schema":{"enum":["status"],"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"buildid":{"example":1569496563,"type":"integer"},"code":{"example":"succeeded","type":"string","xml":{"attribute":true}},"endtime":{"example":1617574611,"type":"integer"},"starttime":{"example":1617574611,"type":"integer"}},"type":"object","xml":{"name":"status"}}}},"description":"OK. The request has succeeded."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"$ref":"#/paths/~1published~1%7Bproject_name%7D/get/responses/403"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"project":{"summary":"Couldn't find Project","x-code":"not_found"},"unknown":{"value":{"code":"unknown"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Present information about the last publication of the pair project and repository.","tags":["Published Binaries"]}},"/request":{"get":{"description":"Get a simple directory listing of all requests","responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"entry":[{"name":122},{"name":123}]},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK\n\nXML Schema used for body validation: [directory.xsd](../schema/directory.xsd)\n"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Get a simple directory listing of all requests","tags":["Request"]},"post":{"description":"Create a request","parameters":[{"description":"This endpoint will refuse the creation of a new request if this parameter is not set.","in":"query","name":"cmd","required":true,"schema":{"enum":["create"],"type":"string"}},{"description":"Ask the server to add revisions of the current sources to the request.","in":"query","name":"addrevision","schema":{"enum":[1],"type":"string"}},{"description":"Enforce a new package instance in a project which has OBS:DelegateRequestTarget set","in":"query","name":"ignore_delegate","schema":{"enum":[1],"type":"string"}},{"description":"Skip the build state check","in":"query","name":"ignore_build_state","schema":{"enum":[1],"type":"string"}}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"action":{"properties":{"options":{"properties":{"sourceupdate":{"example":"cleanup","type":"string"}},"type":"object"},"source":{"properties":{"package":{"example":"obs-server","type":"string","xml":{"attribute":true}},"project":{"example":"home:foo-user","type":"string","xml":{"attribute":true}},"rev":{"example":521,"type":"integer","xml":{"attribute":true}}},"type":"object"},"target":{"properties":{"package":{"example":"obs-server","type":"string","xml":{"attribute":true}},"project":{"example":"OBS:Unstable","type":"string","xml":{"attribute":true}}},"type":"object"},"type":{"example":"submit","type":"string","xml":{"attribute":true}}},"type":"object"},"creator":{"example":"foo-user","type":"string","xml":{"attribute":true}},"description":{"example":"A little version update","type":"string"},"history":{"items":{"properties":{"comment":{"example":"Please review sources","type":"string"},"description":{"example":"Request created","type":"string"},"when":{"example":"2025-08-15T13:51:37.902Z","type":"string","xml":{"attribute":true}},"who":{"example":"foo","type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"id":{"example":42,"type":"integer","xml":{"attribute":true}},"review":{"items":{"anyOf":[{"properties":{"by_user":{"example":"obs-maintainer","type":"string","xml":{"attribute":true}},"state":{"example":"accepted","type":"string","xml":{"attribute":true}},"when":{"example":"2025-08-15T13:51:37.902Z","type":"string","xml":{"attribute":true}},"who":{"example":"obs-maintainer","type":"string","xml":{"attribute":true}}},"type":"object"},{"properties":{"by_group":{"example":"obs-group","type":"string","xml":{"attribute":true}},"state":{"example":"accepted","type":"string","xml":{"attribute":true}},"when":{"example":"2025-08-15T13:51:37.902Z","type":"string","xml":{"attribute":true}},"who":{"example":"obs-maintainer","type":"string","xml":{"attribute":true}}},"type":"object"},{"properties":{"by_project":{"example":"OBS:Unstable","type":"string","xml":{"attribute":true}},"state":{"example":"accepted","type":"string","xml":{"attribute":true}},"when":{"example":"2025-08-15T13:51:37.902Z","type":"string","xml":{"attribute":true}},"who":{"example":"obs-maintainer","type":"string","xml":{"attribute":true}}},"type":"object"},{"properties":{"by_package":{"example":"obs-server","type":"string","xml":{"attribute":true}},"state":{"example":"accepted","type":"string","xml":{"attribute":true}},"when":{"example":"2025-08-15T13:51:37.902Z","type":"string","xml":{"attribute":true}},"who":{"example":"obs-maintainer","type":"string","xml":{"attribute":true}}},"type":"object"}]},"type":"array"},"state":{"properties":{"comment":{"example":"allright","type":"string"},"name":{"example":"accepted","type":"string","xml":{"attribute":true}},"when":{"example":"2025-08-15T13:51:37.902Z","type":"string","xml":{"attribute":true}},"who":{"example":"bar-user","type":"string","xml":{"attribute":true}}},"type":"object"}},"type":"object","xml":{"name":"request"}}}},"description":"Request XML\n\n**NOTE:** You cannot pass the request id in the xml. You can pass the history in the xml, but it will be simply ignored.\n","required":true},"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1request/post/requestBody/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK.\n\nXML Schema used for body validation: [request.rng](../schema/request.rng)\n"},"400":{"content":{"application/xml; charset=utf-8":{"example":{"code":"expand_error","summary":"The source of package test-project/test-package for revision 2 is broken"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad Request"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"403":{"content":{"application/xml; charset=utf-8":{"example":{"code":"create_bs_request_not_authorized","summary":"You are not authorized to create this Bs request."},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Forbidden"}},"security":[{"basic_authentication":[]}],"summary":"Create a request","tags":["Request"]}},"/request/{id}":{"delete":{"description":"Delete a given request.","parameters":[{"$ref":"#/paths/~1request~1%7Bid%7D/get/parameters/0"}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find request with id '10'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found"}},"security":[{"basic_authentication":[]}],"summary":"Delete a given request.","tags":["Request"]},"get":{"description":"Show details about a specified request.","parameters":[{"description":"Id of the choosen request.","example":743,"in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"$ref":"#/paths/~1request?view=collection/get/parameters/6"},{"$ref":"#/paths/~1request?view=collection/get/parameters/7"}],"responses":{"200":{"$ref":"#/paths/~1request/post/responses/200"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find request with id '5'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found"}},"security":[{"basic_authentication":[]}],"summary":"Show details about a specified request.","tags":["Request"]},"post":{"description":"Apply certain actions on a specified request.","parameters":[{"$ref":"#/paths/~1request~1%7Bid%7D/get/parameters/0"},{"description":"- `addreview`:\n  Add a review to a request. **NOTE:** You need to specify who has to address\n  the review by providing an additional paramter. Possible options are:\n  * by_user\n  * by_group\n  * by_project\n\n- `assignreview`:\n  Accept a review for a given group and assign a new review to a specific user.\n  **NOTE:** You need to pass the group name in the `by_group` parameter\n  and the new reviewer in the `reviewer` parameter.\n\n- `changestate`: Modify the state of a given request.\n  **NOTE:** You need to pass the new state throug the `newstate` parameter. Changing\n  from one state to another is in certain cases not allowed. You can still force\n  the operation by using the `force=1` parameter.\n\n- `changereviewstate`:\n  Change the state of a review inside a given request.\n\n- `setpriority`:\n  Change the priority of a given request. You have to pass the choosen priority through\n  the `priority` parameter. Possible values are:\n  * low\n  * moderate\n  * important\n  * critical\n\n- `setincident`: Change the target incident for maintenance_incident actions\n  **NOTE:** You need to provide the incident number through the `incident`\n  parameter.\n\n- `setacceptat`: Set or modify the accept_at time. Either specified by the `time`\n  parameter or by default set to now.\n\n- `approve`: Pre-approve a request in the review state. It will turn into state `accepted`\n  after the last review.\n\n- `cancelapproval`: Reset the approval of a request\n","examples":{"addreview":{"value":"cmd=addreview&by_group=heroes"},"approve":{"value":"cmd=approve"},"assignreview":{"value":"cmd=assignreview&by_group=heroes&reviewer=foo"},"cancelapproval":{"value":"cmd=cancelapproval"},"changereviewstate":{"value":"cmd=changereviewstate&by_group=heroes&newstate=new&comment=reopened"},"changestate":{"value":"cmd=changestate&newstate=accepted"},"setacceptat":{"value":"cmd=setacceptat&time='2020-12-01%2000:00:00%20UTC'"},"setincident":{"value":"cmd=setincident&incident=12"},"setpriority":{"value":"cmd=setpriority&priority=low&comment=notsoimportant"}},"explode":false,"in":"query","name":"cmd","schema":{"type":"string"},"style":"form"},{"description":"Define the new state","in":"query","name":"newstate","schema":{"type":"string"}},{"description":"Define the new priority","in":"query","name":"priority","schema":{"type":"string"}},{"description":"Specify the user of a new review","in":"query","name":"by_user","schema":{"type":"string"}},{"description":"Specify the group of the new review","in":"query","name":"by_group","schema":{"type":"string"}},{"description":"Specify the project of the new review","in":"query","name":"by_project","schema":{"type":"string"}},{"description":"Specify the package of the new review","in":"query","name":"by_package","schema":{"type":"string"}},{"description":"Specify the incident number for `setincident`","in":"query","name":"incident","schema":{"type":"string"}},{"description":"Specify the time for `setacceptat`","in":"query","name":"time","schema":{"type":"string"}},{"description":"Add a comment to one of the actions","in":"query","name":"comment","schema":{"type":"string"}}],"responses":{"200":{"$ref":"#/paths/~1attribute~1%7Bnamespace%7D/delete/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"example":{"code":"no_maintenance_release_target","summary":"Maintenance incident request contains release target project test_maintenance_project with\ninvalid project kind \"standard\" (should be \"maintenance_release\") for package package01\n"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad Request"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"Not Found":{"value":{"code":"not_found","summary":"Couldn't find request with id '120'"}},"Request Not Modifiable":{"value":{"code":"request_not_modifiable","summary":"request is not in review state"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found"}},"security":[{"basic_authentication":[]}],"summary":"Apply certain actions on a specified request.","tags":["Request"]},"put":{"description":"Modify a given request.\n\n**NOTE:** Certain parts of a request can only be changed by admins.\n","parameters":[{"$ref":"#/paths/~1request~1%7Bid%7D/get/parameters/0"}],"requestBody":{"content":{"application/xml; charset=utf-8":{"schema":{"$ref":"#/paths/~1request/post/requestBody/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Request XML\n\n**NOTE:** You cannot pass the request id in the xml. You can pass the history in the xml, but it will be simply ignored.\n\nXML Schema used for body validation: [request.rng](../schema/request.rng)\n","required":true},"responses":{"200":{"$ref":"#/paths/~1request/post/responses/200"},"400":{"content":{"application/xml; charset=utf-8":{"example":{"code":"request_save_error","summary":"Auto accept time is in the past"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad Request"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find request with id '10'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found"}},"security":[{"basic_authentication":[]}],"summary":"Modify a given request.","tags":["Request"]}},"/request/{id}?cmd=diff":{"post":{"description":"Get the diff for all packages affected by the request.\n","parameters":[{"$ref":"#/paths/~1request~1%7Bid%7D/get/parameters/0"},{"description":"Diff relative to a given superseded request. State the id of the corresponding superseded request.\n","example":10401,"in":"query","name":"diff_to_superseded","schema":{"type":"string"}},{"description":"Set this parameter to xml in order to receive a structured diff instead of plain text.","in":"query","name":"view","schema":{"enum":["xml"],"type":"string"}},{"description":"Include parsed issues","in":"query","name":"withissues","schema":{"enum":[true,1],"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"action":{"properties":{"options":{"properties":{"sourceupdate":{"example":"cleanup","type":"string"}},"type":"object"},"source":{"properties":{"package":{"example":"ruby","type":"string","xml":{"attribute":true}},"project":{"example":"home:Iggy:branches:home:Admin","type":"string","xml":{"attribute":true}},"rev":{"example":3,"type":"string","xml":{"attribute":true}}},"type":"object"},"sourcediff":{"properties":{"files":{"items":{"properties":{"file":{"properties":{"diff":{"example":"spec files:\n-----------\n--- test.spec\n+++ test.spec\n@@ -0,0 +1 @@\n+# NEW COMMENT\n\\ No newline at end of file\n","type":"string"},"new":{"$ref":"#/paths/~1request~1%7Bid%7D?cmd=diff/post/responses/200/content/application~1xml;%20charset=utf-8/schema/properties/action/properties/sourcediff/properties/files/items/properties/file/properties/old"},"old":{"properties":{"md5":{"example":"d4f573d2bf9a0e306f87dad7eee0cf56","type":"string","xml":{"attribute":true}},"name":{"example":"ruby.spec","type":"string","xml":{"attribute":true}},"size":{"example":70,"type":"string","xml":{"attribute":true}}},"type":"object"},"state":{"example":"changed","type":"string","xml":{"attribute":true}}},"type":"object"}},"type":"object"},"type":"array"},"issues":{"items":{"properties":{"issue":{"properties":{"label":{"example":"boo#944302","type":"string","xml":{"attribute":true}},"name":{"example":922894,"type":"string","xml":{"attribute":true}},"state":{"example":"added","type":"string","xml":{"attribute":true}},"tracker":{"example":"bnc","type":"string","xml":{"attribute":true}},"url":{"example":"https://bugzilla.opensuse.org/show_bug.cgi?id=944302","type":"string","xml":{"attribute":true}}},"type":"object"}},"type":"object"},"type":"array"},"key":{"example":"9dbe9eb1767c5e12c69839af893dc239","type":"string","xml":{"attribute":true}},"new":{"$ref":"#/paths/~1request~1%7Bid%7D?cmd=diff/post/responses/200/content/application~1xml;%20charset=utf-8/schema/properties/action/properties/sourcediff/properties/old"},"old":{"properties":{"package":{"example":"ruby","type":"string","xml":{"attribute":true}},"project":{"example":"home:Iggy:branches:home:Admin","type":"string","xml":{"attribute":true}},"rev":{"example":3,"type":"string","xml":{"attribute":true}},"srcmd5":{"example":"59300f4ba65f53334b2e2a39f87ba3a0","type":"string","xml":{"attribute":true}}},"type":"object"}},"type":"object"},"target":{"properties":{"package":{"example":"ruby","type":"string","xml":{"attribute":true}},"project":{"example":"home:Admin","type":"string","xml":{"attribute":true}}},"type":"object"},"type":{"example":"submit","type":"string","xml":{"attribute":true}}},"type":"object"},"actions":{"example":0,"type":"string","xml":{"attribute":true}},"id":{"example":12,"type":"string","xml":{"attribute":true}}},"type":"object","x-components":{"schemas":{"NewOldDestination":{"$ref":"#/paths/~1request~1%7Bid%7D?cmd=diff/post/responses/200/content/application~1xml;%20charset=utf-8/schema/properties/action/properties/sourcediff/properties/old"},"OldNewFile":{"$ref":"#/paths/~1request~1%7Bid%7D?cmd=diff/post/responses/200/content/application~1xml;%20charset=utf-8/schema/properties/action/properties/sourcediff/properties/files/items/properties/file/properties/old"}}},"xml":{"name":"diff"}}},"text/plain; charset=utf-8":{"example":"spec files:\n-----------\n--- test.spec\n+++ test.spec\n@@ -0,0 +1 @@\n+# NEW COMMENT\n\\ No newline at end of file\n","schema":{"type":"string"}}},"description":"OK"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"Couldn't find request with id '355'"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found"}},"security":[{"basic_authentication":[]}],"summary":"Get the diff for all packages affected by the request.","tags":["Request"]}},"/request?view=collection":{"get":{"description":"Get a collection of requests for a specified target. **NOTE:**\nYou need to set at least one of the following parameters in order\nto use this endpoint:\n\n* `user`\n* `project`\n* `package`\n* `states`\n* `types`\n* `ids`\n","parameters":[{"description":"Filter the results of requests and open reviews for a certain user. If no other parameters are\napplied, it will include requests where the user is maintainer of the target or the creator of\nthe request.\n","example":"hans","in":"query","name":"user","schema":{"type":"string"}},{"description":"Limit the results of requests and open review requests to the specified target project.","example":"home:hans","in":"query","name":"project","schema":{"type":"string"}},{"description":"Limit the results of requests and open review requests to the specified target package.","example":"ruby","in":"query","name":"package","schema":{"type":"string"}},{"description":"Limit results to a given request state. Multiple states can be provided as a comma separated list.","example":"new,review","in":"query","name":"states","schema":{"type":"string"}},{"description":"Limit the results to certain action types. Multiple types can be provided as a comma separated list.","example":"add_role,submit","in":"query","name":"types","schema":{"type":"string"}},{"description":"Limit the results to a given role. Multiple roles can be provided as a comma separated list.","example":"creator,maintainer,reviewer,source,target","in":"query","name":"roles","schema":{"type":"string"}},{"description":"Include the request history in the results.","example":1,"in":"query","name":"withhistory","schema":{"type":"string"}},{"description":"Includes both, request and review history in the results.","example":1,"in":"query","name":"withfullhistory","schema":{"type":"string"}},{"description":"Limit the results to the specified amount of requests.","example":7,"in":"query","name":"limit","schema":{"type":"integer"}},{"description":"Limit the result to specified request id's. Multiple id's can be provided as a comma separated list.","example":"15,19,23","in":"query","name":"ids","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"schema":{"properties":{"matches":{"example":7,"type":"string","xml":{"attribute":true}},"request":{"items":{"$ref":"#/paths/~1request/post/requestBody/content/application~1xml;%20charset=utf-8/schema"},"type":"array"}},"type":"object","xml":{"name":"collection"}}}},"description":"OK"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"examples":{"Not Found":{"value":{"code":"not_found","summary":"Couldn't find User with login = foo"}},"Require Filter":{"value":{"code":"require_filter","summary":"This call requires at least one filter, either by user, project or package or states or types or reviewstates"}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found"}},"security":[{"basic_authentication":[]}],"summary":"Get a collection of requests for a specified target","tags":["Request"]}},"/worker/status":{"get":{"description":"Lists status of workers, running jobs, waiting jobs, status of the backend services and general statistics.\n\nOther ways to obtain the same information as with this endpoint are:\n  * `GET /worker/_status`\n  * `GET /status/workerstatus`\n  * `GET /build/_workerstatus`\n","responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"blocked":[{"arch":"i586","jobs":"0"},{"arch":"x86_64","jobs":"0"}],"buildavg":[{"arch":"i586","buildavg":"1200"},{"arch":"x86_64","buildavg":"1200"}],"building":[{"arch":"x86_64","hostarch":"x86_64","package":"android-sdk","project":"home:enzokiel","repository":"openSUSE_11.3_Update","starttime":"1289838671","workerid":"1a1f67b948b6:2"}],"clients":"2","down":[{"hostarch":"aarch64","workerid":"armbuild03:1"}],"idle":[{"hostarch":"x86_64","workerid":"1a1f67b948b6:1"}],"partition":[{"daemon":[{"starttime":"1617711138","state":"running","type":"srcserver"},{"starttime":"1617711144","state":"running","type":"servicedispatch"},{"starttime":"1617711144","state":"running","type":"service"},{"starttime":"1617711145","state":"running","type":"clouduploadserver"},{"starttime":"1617711144","state":"running","type":"clouduploadworker"},{"arch":"i586","queue":{"high":"0","low":"11","med":"0","next":"0"},"starttime":"1617711145","state":"running","type":"scheduler"},{"arch":"x86_64","queue":{"high":"0","low":"11","med":"0","next":"0"},"starttime":"1617711145","state":"running","type":"scheduler"},{"starttime":"1617711143","state":"running","type":"repserver"},{"starttime":"1617711144","state":"running","type":"dispatcher"},{"starttime":"1617711145","state":"running","type":"publisher"},{"starttime":"1617711146","state":"running","type":"signer"}]},{"daemon":[{"arch":"aarch64","queue":{"high":"0","low":"4","med":"1","next":"22"},"starttime":"1617148925","state":"running","type":"scheduler"}],"name":"back-main"}],"waiting":[{"arch":"i586","jobs":"0"},{"arch":"x86_64","jobs":"0"}]},"schema":{"properties":{"blocked":{"items":{"properties":{"arch":{"type":"string","xml":{"attribute":true}},"jobs":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"buildavg":{"items":{"properties":{"arch":{"type":"string","xml":{"attribute":true}},"buildavg":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"building":{"items":{"properties":{"arch":{"type":"string","xml":{"attribute":true}},"hostarch":{"type":"string","xml":{"attribute":true}},"package":{"type":"string","xml":{"attribute":true}},"project":{"type":"string","xml":{"attribute":true}},"repository":{"type":"string","xml":{"attribute":true}},"starttime":{"type":"string","xml":{"attribute":true}},"workerid":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"clients":{"type":"integer","xml":{"attribute":true}},"down":{"items":{"properties":{"hostarch":{"type":"string","xml":{"attribute":true}},"workerid":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"idle":{"items":{"properties":{"hostarch":{"type":"string","xml":{"attribute":true}},"workerid":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"partition":{"items":{"properties":{"daemon":{"items":{"properties":{"arch":{"type":"string","xml":{"attribute":true}},"queue":{"properties":{"high":{"type":"string","xml":{"attribute":true}},"low":{"type":"string","xml":{"attribute":true}},"med":{"type":"string","xml":{"attribute":true}},"next":{"type":"string","xml":{"attribute":true}}},"type":"object"},"starttime":{"type":"string","xml":{"attribute":true}},"state":{"type":"string","xml":{"attribute":true}},"type":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"name":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"},"waiting":{"items":{"properties":{"arch":{"type":"string","xml":{"attribute":true}},"jobs":{"type":"string","xml":{"attribute":true}}},"type":"object"},"type":"array"}},"type":"object","xml":{"name":"workerstatus"}}}},"description":"OK"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"}},"security":[{"basic_authentication":[]}],"summary":"Lists status of workers, jobs, backend services and general statistics.","tags":["Workers"]}},"/worker/{architecture_name}:{worker_id}":{"get":{"description":"Lists capabilites of a worker.\n\nThis can be useful when checking for constraints.\n\nThis operation is the same as `GET /worker/capability/{architecture_name}:{worker_id}`.\n","parameters":[{"$ref":"#/paths/~1architectures~1%7Barchitecture_name%7D/get/parameters/0"},{"description":"Worker id.","example":"1a1f67b948b6:1","in":"path","name":"worker_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml; charset=utf-8":{"example":{"hardware":{"cpu":{"flag":["fpu","vme","de","pse","tsc","msr"]},"jobs":"1","processors":"8"},"hostarch":"x86_64","hostlabel":"OBS_WORKER_SECURITY_LEVEL_","linux":{"flavor":"default","version":"5.11.6-1"},"registerserver":"http://backend:5252","sandbox":"chroot","workerid":"1a1f67b948b6:1"},"schema":{"properties":{"hardware":{"properties":{"cpu":{"properties":{"flag":{"items":{"type":"string"},"type":"array"}},"type":"object"},"jobs":{"type":"string"},"processors":{"type":"string"}},"type":"object"},"hostarch":{"type":"string","xml":{"attribute":true}},"hostlabel":{"type":"string"},"linux":{"properties":{"flavor":{"type":"string"},"version":{"type":"string"}},"type":"object"},"registerserver":{"type":"string","xml":{"attribute":true}},"sandbox":{"type":"string"},"workerid":{"type":"string","xml":{"attribute":true}}},"type":"object","xml":{"name":"worker"}}}},"description":"OK"},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"404","details":"404 remote error: unknown worker (http://backend:5252/worker/x86_64:1a1f67b948bf:1)","summary":"remote error: unknown worker (http://backend:5252/worker/x86_64:1a1f67b948bf:1)"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Lists capabilites of a worker.","tags":["Workers"]}},"/worker?cmd=checkconstraints":{"post":{"description":"Given a project, package, repository and architecture, list workers which can build with that restrictions, and also match a constraints filter.\n\nThis endpoint doesn't create or modify any data.\n\nMore information about constraints can be found in the\n[user guide](https://openbuildservice.org/help/manuals/obs-user-guide/cha.obs.build_job_constraints.html).\n\nThis operation is the same as `POST /worker/command/run?cmd=checkconstraints`.\n","parameters":[{"description":"Project name.","example":"home:user1","in":"query","name":"project","required":true,"schema":{"type":"string"}},{"description":"Repository name.","example":"openSUSE_Tumbleweed","in":"query","name":"repository","required":true,"schema":{"type":"string"}},{"description":"Architecture name.","example":"x86_64","in":"query","name":"arch","required":true,"schema":{"type":"string"}},{"description":"Package name.","example":"test_package","in":"query","name":"package","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/xml; charset=utf-8":{"examples":{"cpu_flags":{"summary":"Cpu flags","value":{"hardware":{"cpu":{"flag":["mmx","sse2"]}}}},"mix":{"summary":"Linux version and linux flavor","value":{"linux":{"flavor":"default","version":{"max":4,"min":3}}}},"processors":{"summary":"Number of processors","value":{"hardware":{"processors":2}}}},"schema":{"properties":{"hardware":{"properties":{"cpu":{"properties":{"flag":{"items":{"type":"string"},"type":"array"}},"type":"object"},"disk":{"properties":{"size":{"type":"string"}},"type":"object"},"memory":{"properties":{"size":{"type":"string"}},"type":"object"},"physicalmemory":{"properties":{"size":{"type":"string"}},"type":"object"},"processors":{"type":"string"}},"type":"object"},"hostlabel":{"type":"string"},"linux":{"properties":{"flavor":{"type":"string"},"version":{"properties":{"max":{"type":"string"},"min":{"type":"string"}},"type":"object"}},"type":"object"},"sandbox":{"example":"chroot","type":"string"}},"type":"object","xml":{"name":"constraints"}}}},"description":"Constraints XML filter","required":true},"responses":{"200":{"content":{"application/xml; charset=utf-8":{"examples":{"no_workers":{"summary":"No Workers Satisfy the Constraints","value":null},"two_workers":{"summary":"Two Workers Satisfy the Constraints","value":{"entry":[{"name":"x86_64:1a1f67b948b6:1"},{"name":"x86_64:1a1f67b948b6:2"}]}}},"schema":{"$ref":"#/paths/~1architectures/get/responses/200/content/application~1xml;%20charset=utf-8/schema"}}},"description":"OK"},"400":{"content":{"application/xml; charset=utf-8":{"example":{"code":"missing_parameter","summary":"Required Parameter arch missing"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Bad Request."},"401":{"$ref":"#/paths/~1architectures/get/responses/401"},"404":{"content":{"application/xml; charset=utf-8":{"example":{"code":"not_found","summary":"&lt;status code=\"404\"&gt;\n&lt;summary&gt;repository 'home:Admin/openSUSE_Tumbleweed' has no architecture 'x86_64d'&lt;/summary&gt;\n&lt;details&gt;404 repository 'home:Admin/openSUSE_Tumbleweed' has no architecture 'x86_64d'&lt;/details&gt;\n&lt;/status&gt;\n"},"schema":{"$ref":"#/paths/~1architectures/get/responses/401/content/application~1xml;%20charset=utf-8/schema"}}},"description":"Not Found."}},"security":[{"basic_authentication":[]}],"summary":"Lists workers which match a constraints filter.","tags":["Workers"]}}},"components":{"securitySchemes":{"basic_authentication":{"scheme":"basic","type":"http"}}}}