--- swagger: '2.0' info: version: 1.0.0 title: GeoServer Styles description: A style describes how a resource is symbolized or rendered by the Web Map Service. contact: name: GeoServer email: 'geoserver-users@osgeo.org' url: 'https://geoserver.org/comm/' host: localhost:8080 basePath: /geoserver/rest paths: /styles: get: operationId: getStyles tags: - "Styles" summary: Get a list of styles description: Displays a list of all styles on the server. Use the "Accept:" header to specify format or append an extension to the endpoint (example "/styles.xml" for XML). produces: - application/xml - application/json - text/html responses: 200: description: OK schema: $ref: "#/definitions/StyleList" examples: application/xml: | application/json: | {"styles": {"style": [ {"href":"http://localhost:8080/geoserver/rest/styles/burg.json", "name":"burg"}, {"href":"http://localhost:8080/geoserver/rest/styles/capitals.json", "name":"capitals"}]}} post: operationId: postStyles tags: - "Styles" summary: Add a new style description: | Adds a new style entry to the server. Using POST with the `application/xml` or `application/json` content only adds the style info to the catalog and does not upload style content. PUT to `/styles/{style}` to upload the style in this case. Use POST with a style file (`application/vnd.ogc.sld+xml` or `application/vnd.ogc.se+xml` for SLD; additional style types are added by extensions) to generate a style info and upload the style all at once. Then separately PUT the style info at `/styles/{style}` to make any desired changes to the generated catalog entry. You can also use POST with a ZIP file to upload a SLD 1.0 (`application/vnd.ogc.sld+xml`) file and any associated icon files, and then separately PUT the style info at /styles/{style}. POST with a ZIP file does not support any other style types. parameters: - $ref: "#/parameters/StyleInfoPost" - name: name in: query type: string description: The name of the style. Used only when POSTing a style file or ZIP bundle, to determine the name of the style in the catalog. Generated from the filename if not provided. required: false - name: Content-Type in: header type: string description: Content-Type of the style file. Used to determine style encoding when POSTing a style file (e.g. SLD or SE). required: false consumes: - application/xml - application/json - application/zip - text/xml - text/json - application/vnd.ogc.sld+xml - application/vnd.ogc.se+xml - application/vnd.geoserver.geocss+css - application/vnd.geoserver.ysld+yaml - application/vnd.geoserver.mbstyle+json produces: - text/plain responses: 201: description: Created put: operationId: putStyles tags: - "Styles" description: Invalid. Use POST for adding a new style, or use PUT with /styles/{style} to edit/upload an existing style. responses: 405: description: Method Not Allowed delete: operationId: deleteStyles tags: - "Styles" description: Invalid. Use /styles/{style} instead. responses: 405: description: Method Not Allowed /styles/{style}: get: operationId: getStyle tags: - "Styles" summary: Retrieve a style description: | Retrieves a single style. Used to both request the style info and the style definition body, depending on the media type requested. The media type can be specified either by using the "Accept:" header or by appending an extension to the endpoint. For example, a style info can be requested in XML format using "/styles/{style}.xml" or "Accept: application/xml". (Also available: "{style}.json", "Accept: application/json" "{style}.html", and "Accept: text/html"). The style definition body can be requested by either appending the file extension of the style file (e.g., "{style}.sld" or "{style}.css") or by specifying the correct media type for the style definition in the "Accept" header. Be aware that by default, if extension is specified, it will override media type. For example if you use SLD 1.1.0 style and specify .sld extension (which provides SLD 1.0.0 result), but use application/vnd.ogc.se+xml media type (which provides SLD 1.1.0 result), response still will be presented in sld version 1.0.0 Below are common style formats and the corresponding media types that can be used in the Accept header to request the style definition body. - application/vnd.ogc.sld+xml for SLD 1.0.0 SLDs - application/vnd.ogc.se+xml for SLD 1.1.0 SLDs - application/vnd.geoserver.geocss+css for css styles - application/vnd.geoserver.ysld+yaml for ysld styles - application/vnd.geoserver.mbstyle+json for mb styles produces: - application/xml - application/json - application/vnd.ogc.sld+xml - application/vnd.ogc.se+xml - text/html parameters: - name: style in: path required: true description: Name of the style to retrieve. type: string responses: 200: description: OK schema: $ref: "#/definitions/Style" examples: application/xml: | application/json: | {"style": {"name":"rain", "format":"sld", "languageVersion": {"version":"1.0.0"}, "filename":"rain.sld"} } application/vnd.ogc.sld+xml: | rain rain Rain distribution 1.0 post: operationId: postStyle tags: - "Styles" description: Invalid. Use PUT to edit a style, or POST with /styles to add a new style. parameters: - name: style in: path required: true description: Name of the style to retrieve. type: string responses: 405: description: Method Not Allowed put: operationId: putStyle tags: - "Styles" summary: Modify a single style description: | Modifies a single style. Use the "Accept:" header to specify format or append an extension to the endpoint (example `/styles/{style}.xml` for XML). Using PUT with the `application/xml` or `application/json` content modifies the style info in the catalog and does not alter the style content. Using PUT with any other format will modify the content of the style. You can also use PUT with a ZIP file to upload a SLD 1.0 (`application/vnd.ogc.sld+xml`) file and any associated icon files parameters: - $ref: "#/parameters/StyleInfoPut" - name: style in: path required: true description: Name of the style to edit. type: string - name: raw in: query description: When set to "true", will forgo parsing and encoding of the uploaded style content, and instead the style will be streamed directly to the GeoServer configuration. Use this setting if the content and formatting of the style is to be preserved exactly. May result in an invalid and unusable style if the payload is malformed. Allowable values are "true" or "false" (default). Only used when uploading a style file. type: boolean required: false default: false consumes: - application/json - application/zip - text/xml - application/xml - text/json - application/vnd.ogc.sld+xml - application/vnd.ogc.se+xml - application/vnd.geoserver.geocss+css - application/vnd.geoserver.mbstyle+json - application/vnd.geoserver.ysld+yaml responses: 200: description: OK 401: description: Unauthorized delete: operationId: deleteStyle tags: - "Styles" summary: Delete style description: Deletes a style. parameters: - name: style in: path required: true description: Name of the style to delete. type: string - name: purge in: query required: false default: false description: Specifies whether the underlying file containing the style should be deleted on disk. type: boolean - name: recurse in: query required: false default: false description: Removes references to the specified style in existing layers. type: boolean responses: 200: description: OK 401: description: Unauthorized /workspaces/{workspace}/styles: get: operationId: getWorkspaceStyles tags: - "Styles" summary: Get a list of styles in a given workspace description: Displays a list of all styles in a given workspace. Use the "Accept:" header to specify format or append an extension to the endpoint (example "/workspaces/{workspace}/styles.xml" for XML). parameters: - name: workspace in: path required: true description: Name of workspace type: string produces: - application/xml - application/json - text/html responses: 200: description: OK schema: $ref: "#/definitions/StyleList" examples: application/xml: | application/json: | { "styles": { "style": [ { "name": "burg", "href": "http://localhost:8080/geoserver/rest/workspaces/sf/styles/burg.json" }, { "name": "dem", "href": "http://localhost:8080/geoserver/rest/workspaces/sf/styles/dem.json" } ] } } post: operationId: postWorkspaceStyles tags: - "Styles" summary: Add a new style to a given workspace description: | Adds a new style entry to the server. Using POST with the `application/xml` or `application/json` content only adds the style info to the catalog and does not upload style content. PUT to `/workspaces/{workspace}/styles/{style}` to upload the style in this case. Use POST with a style file (`application/vnd.ogc.sld+xml` or `application/vnd.ogc.sld+xml` for SLD; additional style types are added by extensions) to generate a style info and upload the style all at once. Then separately PUT the style info at `/workspaces/{workspace}/styles/{style}` to make any desired changes to the generated catalog entry. You can also use POST with a ZIP file to upload a SLD 1.0 (`application/vnd.ogc.sld+xml`) file and any associated icon files, and then separately PUT the style info at /workspaces/{workspace}/styles/{style}. POST with a ZIP file does not support any other style types. parameters: - name: workspace in: path required: true description: Name of workspace type: string - $ref: "#/parameters/StyleInfoPost" - name: name in: query type: string description: The name of the style. Used only when POSTing a style file or ZIP bundle, to determine the name of the style in the catalog. Generated from the filename if not provided. required: false - name: Content-Type in: header type: string description: Content-Type of the style file. Used to determine style encoding when POSTing a style file (e.g. SLD or SE). required: false consumes: - application/xml - application/json - application/zip - text/html - text/json - application/vnd.ogc.sld+xml - application/vnd.ogc.se+xml - application/vnd.geoserver.geocss+css - application/vnd.geoserver.ysld+yaml - application/vnd.geoserver.mbstyle+json produces: - text/plain responses: 201: description: Created put: operationId: putWorkspaceStyles tags: - "Styles" description: Invalid. Use POST for adding a new style, or use PUT with /workspaces/{workspace}/styles/{style} to edit/upload an existing style. parameters: - name: workspace in: path required: true description: Name of workspace type: string responses: 405: description: Method Not Allowed delete: operationId: deleteWorkspaceStyles tags: - "Styles" description: Invalid. Use /workspaces/{workspace}/styles/{style} instead. parameters: - name: workspace in: path required: true description: Name of workspace type: string responses: 405: description: Method Not Allowed /rest/workspaces/{workspace}/styles/{style}: get: operationId: getWorkspaceStyle tags: - "Styles" summary: Retrieve a style from a given workspace description: | Retrieves a single style. Used to both request the style info and the style definition body, depending on the media type requested. The media type can be specified either by using the "Accept:" header or by appending an extension to the endpoint. For example, a style info can be requested in XML format using "/styles/{style}.xml" or "Accept: application/xml". (Also available: "{style}.json", "Accept: application/json" "{style}.html", and "Accept: text/html"). The style definition body can be requested by either appending the file extension of the style file (e.g., "{style}.sld" or "{style}.css") or by specifying the correct media type for the style definition in the "Accept" header. Be aware that by default, if extension is specified, it will override media type. For example if you use SLD 1.1.0 style and specify .sld extension (which provides SLD 1.0.0 result), but use application/vnd.ogc.se+xml media type (which provides SLD 1.1.0 result), response still will be presented in sld version 1.0.0 Below are common style formats and the corresponding media types that can be used in the Accept header to request the style definition body. - application/vnd.ogc.sld+xml for SLD 1.0.0 SLDs - application/vnd.ogc.se+xml for SLD 1.1.0 SLDs - application/vnd.geoserver.geocss+css for css styles - application/vnd.geoserver.ysld+yaml for ysld styles - application/vnd.geoserver.mbstyle+json for mb styles produces: - application/xml - application/json - application/vnd.ogc.sld+xml - application/vnd.ogc.se+xml - text/html parameters: - name: workspace in: path required: true description: Name of the workspace for style definitions type: string - name: style in: path required: true description: Name of the style to retrieve. type: string responses: 200: description: OK schema: $ref: "#/definitions/StyleWorkspace" examples: application/xml: | application/json: | {"style": {"name":"burg", "workspace": {"name":"sf"}, "format":"sld", "languageVersion":{"version":"1.0.0"}, "filename":"burg.sld"}} application/vnd.ogc.sld+xml: | redflag burg A small red flag A sample of how to use an SVG based symbolizer Red flag image/svg+xml 20 post: operationId: postWorkspaceStyle tags: - "Styles" description: Invalid. Use PUT to edit a style, or POST with /workspaces/{workspace}/styles to add a new style. parameters: - name: workspace in: path required: true description: Name of the workspace for style definitions type: string - name: style in: path required: true description: Name of the style to retrieve. type: string responses: 405: description: Method Not Allowed put: operationId: putWorkspaceStyle tags: - "Styles" summary: Modify a single style in a given workspace description: | Modifies a single style in a given workspace. Use the "Accept:" header to specify format or append an extension to the endpoint (example `/workspaces/{workspace}/styles/{style}.xml` for XML). Using PUT with the `application/xml` or `application/json` content modifies the style info in the catalog and does not alter the style content. Using PUT with any other format will modify the content of the style. You can also use PUT with a ZIP file to upload a SLD 1.0 (`application/vnd.ogc.sld+xml`) file and any associated icon files parameters: - $ref: "#/parameters/StyleInfoPut" - name: workspace in: path required: true description: Name of the workspace for style definitions type: string - name: style in: path required: true description: Name of the style to retrieve. type: string - name: raw in: query description: When set to "true", will forgo parsing and encoding of the uploaded style content, and instead the style will be streamed directly to the GeoServer configuration. Use this setting if the content and formatting of the style is to be preserved exactly. May result in an invalid and unusable style if the payload is malformed. Allowable values are "true" or "false" (default). Only used when uploading a style file. type: boolean required: false consumes: - application/json - application/zip - text/xml - application/xml - text/json - application/vnd.ogc.sld+xml - application/vnd.ogc.se+xml - application/vnd.geoserver.geocss+css - application/vnd.geoserver.ysld+yaml - application/vnd.geoserver.mbstyle+json responses: 200: description: OK 401: description: Unauthorized delete: operationId: deleteWorkspaceStyle tags: - "Styles" summary: Delete style in a given workspace description: Deletes a style in a given workspace. parameters: - name: workspace in: path required: true description: Name of the workspace for style definitions type: string - name: style in: path required: true description: Name of the style to delete. type: string - name: purge in: query required: false default: false description: Specifies whether the underlying file containing the style should be deleted on disk. type: boolean - name: recurse in: query required: false default: false description: Removes references to the specified style in existing layers. type: boolean responses: 200: description: OK 401: description: Unauthorized /rest/layers/{layer}/styles: get: operationId: getLayerStyles tags: - "Styles" summary: Get a list of layer alternate styles description: Displays a list of all alternate styles for a given layer. Use the "Accept:" header to specify format or append an extension to the endpoint (example "/layers/{layer}/styles.xml" for XML). parameters: - name: layer in: path required: true description: Name of the layer to manage styles for type: string produces: - application/xml - application/json - text/html responses: 200: description: OK schema: $ref: "#/definitions/StyleList" examples: application/xml: | application/json: | { "styles": { "style": [ { "name": "pophatch", "href": "http://localhost:8080/geoserver/rest/layers/topp:states/styles/pophatch.json" }, { "name": "polygon", "href": "http://localhost:8080/geoserver/rest/layers/topp:states/styles/polygon.json" } ] } } post: operationId: postLayerStyles tags: - "Styles" summary: Add a new style description: Adds a new style entry to the layer. The style named in styleBody must already exist, and will not be altered by this request. parameters: - name: layer in: path required: true description: Name of the layer to manage styles for type: string - name: styleBody description: Style body information naming an existing style to add to the layer in: body required: true schema: $ref: "#/definitions/StyleInfoPost" - name: default type: boolean in: query description: Whether to make this the default style for the layer. default: false required: false consumes: - application/xml - application/json responses: 201: description: Created put: operationId: putLayerStyles tags: - "Styles" description: Invalid. Use POST to modify the styles for a layer. parameters: - name: layer in: path required: true description: Name of the layer to manage styles for type: string responses: 405: description: Method Not Allowed delete: operationId: deleteLayerStyles tags: - "Styles" description: Invalid. parameters: - name: layer in: path required: true description: Name of the layer to manage styles for type: string responses: 405: description: Method Not Allowed parameters: StyleInfoPost: name: styleBody description: > The style body of a request JSON or XML style uploads follow the schema. For example: - application/xml: ``` ``` - application/json: ``` { "style": { "name": "roads_style", "filename": "roads.sld" } } ``` Otherwise, the style body is an actual style: - application/zip: ``` ``` - application/vnd.ogc.sld+xml: ``` default_line Default Line A sample style that draws a line rule1 Blue Line A solid blue line with a 1 pixel width #0000FF ``` in: body required: true schema: $ref: "#/definitions/StyleInfoPost" StyleInfoPut: name: styleBody description: > The style body of a request. For a PUT, only values which should be changed need to be included. JSON or XML style uploads follow the schema, and alter the style configuration. For example: - application/xml: ``` ``` - application/json: ``` { "style": { "name": "roads_style", "languageVersion": { "version": "1.0.0" }, "filename": "roads.sld", "legend": { "format": "image/png; charset=UTF-8", "height": 32, "width": 32, "onlineResource": "grass_fill.png" } } } ``` Otherwise, the style body is an actual style: - application/zip: ``` ``` - application/vnd.ogc.sld+xml: ``` default_line Default Line A sample style that draws a line rule1 Blue Line A solid blue line with a 1 pixel width #0000FF ``` in: body required: true schema: $ref: "#/definitions/StyleInfoPost" definitions: StyleInfoPost: title: style type: object properties: name: type: string description: Name of style example: roads_style filename: type: string description: Name of filename containing SLD code example: roads.sld StyleList: title: styles type: array items: $ref: '#/definitions/StyleListItem' StyleListItem: title: style type: object properties: name: type: string description: Name of style href: type: string description: URL to style definition Style: type: object title: style properties: name: type: string description: Name of style format: type: string description: Format of style languageVersion: type: object properties: version: type: string description: Version of style format filename: type: string description: File name of the style StyleWorkspace: type: object title: style properties: name: type: string description: Name of style workspace: type: object properties: name: type: string description: Name of workspace containing the style format: type: string description: Format of style languageVersion: type: object properties: version: type: string description: Version of style format filename: type: string description: File name of the style StyleLayer: type: object title: style properties: name: type: string description: Name of style layer: type: object properties: name: type: string description: Name of layer containing the style format: type: string description: Format of style languageVersion: type: object properties: version: type: string description: Version of style format filename: type: string description: File name of the style