openapi: 3.1.0 info: title: Service Points API [BETA] version: 3.0.0 description: Search service points to display and select in checkout and delivery flows. contact: name: Sendcloud API Support url: https://www.sendcloud.dev email: contact@sendcloud.com license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html servers: - url: https://panel.sendcloud.sc/api/v3 description: Sendcloud Production tags: - name: Service Points description: Service Points API paths: /service-points: get: summary: Retrieve a list of service points description: Find service points for selected carriers in a given area. x-mint: href: /api/v3/service-points/retrieve-a-list-of-service-points metadata: tag: Beta content: >- Returns service points in a given country for selected carriers. This endpoint is designed for checkout and delivery flows where customers need to choose a pickup location. It can be used to display service points on a map, show them as a list, or support automatic service point selection. ## Carrier selection A carrier scope must always be provided. Use `carrier_code` to search service points for specific carriers, or set `use_integration_carriers` to `true` to use the carriers enabled in the authenticated [integration's settings](https://app.sendcloud.com/v2/settings/integrations/manage). `carrier_code` and `use_integration_carriers` are mutually exclusive. Exactly one of them must be provided. In some cases, returned service points may belong to a different carrier than the one that was requested. This can happen when a carrier has been deprecated and superseded by another carrier, or when the requested carrier uses different carrier networks depending on the country. As a result, `carrier.code` in the response may differ from the requested `carrier_code`. This is expected behavior. When a carrier has been deprecated, switching to the replacement carrier code is recommended as soon as the deprecation is announced. Deprecated carrier codes may continue to work for some time through internal mapping, but compatibility after the deprecation deadline is not guaranteed. ## Reference point and geocoding A reference point is the location used to search for nearby service points. It can be provided as coordinates, as a free-text address, or as a structured address split into street, house number, postal code, and city. Free-text address input is usually the best fit when the address comes directly from a checkout form as a single string. Structured address input is useful when address parts are already available separately, because it removes ambiguity and can improve geocoding quality. For example, it makes it clearer which part of the input is the street, house number, postal code, or city. `address`, the structured `address_*` parameters, and `latitude`/`longitude` are mutually exclusive. Only one way of providing the reference point can be used in a single request. When using structured address parameters, `address_house_number` must be combined with `address_street` or `address_postal_code` - a house number on its own is not specific enough to locate an address. The geocoding result can be used to understand whether the address was resolved successfully and, if so, how precise the match is. When `data.geocoding.status` is `not_found`, the address could not be resolved and no service points are returned. When `data.geocoding.status` is partially_matched, the address was matched, but not all parts of the input could be used. For example, a full address may be provided, but only the postal code could be matched. The search still runs based on the matched parts, and `data.geocoding.precision` reflects the resulting match level. When the address is resolved, `data.geocoding.precision` can be used to understand how specific the match is. This can help decide whether the result is precise enough for the current flow. For example, a full address may still resolve only to `postal_code` or `city`, which means the search is based on a broader area than the full address. Address geocoding depends on an external service. If this service is temporarily unavailable, the API returns 503 Service Unavailable, even when the request is valid. We do our best to keep this reliable, but if it happens, retrying after a short delay usually resolves it. ## Search area When a reference point is available, the API returns the closest matching service points around that location. By default, the closest `limit` results are returned. The search area can be narrowed in two ways: - use `radius` to return only service points within a given distance from the reference point - use `ne_latitude`, `ne_longitude`, `sw_latitude`, and `sw_longitude` to search within a bounding box Bounding boxes are especially useful for map-based interfaces where results should match the area currently visible on the map. `radius` and the bounding box parameters are mutually exclusive. When using a bounding box, all four bounding box parameters must be provided, and its diagonal must not exceed 50 km. ## Data freshness Service point details are refreshed regularly based on carrier updates. Because carriers differ in update frequency and coverage, some records may become outdated over time. This is reflected by the `is_expired` field. In area-based searches, only service points that are considered fresh enough are returned. When service points are requested explicitly by their identifier, expired service points may still be included in the response. ## Results Requests around a reference point return service points ordered by proximity to that location. Searches based on other filters, such as carrier-specific identifiers, do not have a guaranteed sort order. This endpoint is designed for service point discovery in checkout and map-based flows, so results are not paginated by design. Use `limit` to control the maximum number of service points returned for the use case. For example, if only the 5 closest service points need to be shown, a lower limit can reduce response size and avoid returning unnecessary results. security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] operationId: sc-public-v3-servicepoints-get-list_service_points tags: - Service Points parameters: - name: country_code in: query required: true schema: type: string maxLength: 2 example: NL description: >- Country to retrieve service points for, as an ISO 3166-1 alpha-2 code. - name: carrier_code in: query required: false schema: type: array items: type: string example: postnl example: - dhl - postnl style: form explode: true description: Carrier codes to filter results by. - name: use_integration_carriers in: query required: false schema: type: boolean description: >- Filters service points to carriers enabled in the authenticated integration's settings. - name: address in: query required: false schema: type: string example: Stadhuisplein 10, Eindhoven description: Free-text address used as the reference point for the search. - name: address_street in: query required: false schema: type: string example: Stadhuisplein description: Street of the reference address. - name: address_house_number in: query required: false schema: type: string example: '10' description: House number of the reference address. - name: address_postal_code in: query required: false schema: type: string example: 5611 EM description: Postal code of the reference address. - name: address_city in: query required: false schema: type: string example: Eindhoven description: City of the reference address. - name: latitude in: query required: false schema: type: number format: double example: 51.435046 description: Latitude of the reference point. - name: longitude in: query required: false schema: type: number format: double example: 5.479507 description: Longitude of the reference point. - name: ne_latitude in: query required: false schema: type: number format: double example: 51.49 description: Latitude of the north-east corner of the bounding box. - name: ne_longitude in: query required: false schema: type: number format: double example: 5.57 description: Longitude of the north-east corner of the bounding box. - name: sw_latitude in: query required: false schema: type: number format: double example: 51.38 description: Latitude of the south-west corner of the bounding box. - name: sw_longitude in: query required: false schema: type: number format: double example: 5.36 description: Longitude of the south-west corner of the bounding box. - name: radius in: query required: false schema: type: integer minimum: 100 maximum: 50000 example: 5000 description: Search radius in meters from the reference point. - name: carrier_service_point_id in: query required: false schema: type: array items: type: string example: NL98765 example: - '12345' - NL98765 style: form explode: true description: Carrier-specific identifiers of the service points to return. - name: carrier_shop_type in: query required: false schema: type: string example: packStation description: Filters results by carrier-specific shop type. - name: general_shop_type in: query required: false schema: type: array items: type: string enum: - servicepoint - locker - post_office - carrier_depot example: - servicepoint - locker style: form explode: true description: >- Filters results by general shop type. Use this to narrow results without having to handle each carrier's specific shop types separately. - name: limit in: query required: false schema: type: integer minimum: 1 maximum: 200 default: 100 example: 100 description: Maximum number of service points to return. responses: '200': description: OK content: application/json: schema: type: object properties: data: type: object properties: results: type: array items: $ref: '#/components/schemas/ServicePoint' geocoding: anyOf: - $ref: '#/components/schemas/GeocodingResult' - type: 'null' required: - results - geocoding required: - data examples: ServicePointList: summary: A list of service points near a reference location value: data: results: - id: 1000001 name: Stadhuisplein Parcel Shop carrier: code: dhl name: DHL logo_url: >- https://cdn.sendcloud.com/global-media/dhl/img/logo.svg icon_url: >- https://cdn.sendcloud.com/global-media/dhl/img/icon.svg carrier_service_point_id: NL-00001 carrier_shop_type: paketshop general_shop_type: servicepoint address: street: Stadhuisplein house_number: '1' postal_code: 5611 EM city: Eindhoven country_code: NL position: latitude: 51.438022 longitude: 5.478543 contact: email: '' phone: '' opening_times: monday: - start_time: '09:00' end_time: '17:00' tuesday: - start_time: '09:00' end_time: '17:00' wednesday: - start_time: '09:00' end_time: '17:00' thursday: - start_time: '09:00' end_time: '17:00' friday: - start_time: '09:00' end_time: '17:00' saturday: null sunday: null is_open_tomorrow: true next_open_at: '2026-03-11T09:00:00+01:00' is_expired: false distance: 85 - id: 1000002 name: Stationsplein Parcel Locker carrier: code: postnl name: PostNL logo_url: >- https://cdn.sendcloud.com/global-media/postnl/img/logo.svg icon_url: >- https://cdn.sendcloud.com/global-media/postnl/img/icon.svg carrier_service_point_id: NL-00002 carrier_shop_type: pakketautomaat general_shop_type: locker address: street: Stationsplein house_number: '1' postal_code: 5611 AC city: Eindhoven country_code: NL position: latitude: 51.443218 longitude: 5.4816 contact: email: '' phone: '' opening_times: monday: - start_time: '10:00' end_time: '21:00' tuesday: - start_time: '10:00' end_time: '21:00' wednesday: - start_time: '10:00' end_time: '21:00' thursday: null friday: - start_time: '10:00' end_time: '21:00' saturday: - start_time: '10:00' end_time: '21:00' sunday: null is_open_tomorrow: false next_open_at: '2026-03-13T10:00:00+01:00' is_expired: false distance: 919 geocoding: status: matched precision: street formatted_address: Stadhuisplein 10, 5611 EM Eindhoven, Nederland NoServicePointsNearby: summary: No service points nearby value: data: results: [] geocoding: status: matched precision: house_number formatted_address: Stadhuisplein 10, 5611 EM Eindhoven, Nederland PartiallyMatchedAddress: summary: Address matched only partially value: data: results: - id: 1000001 name: Stadhuisplein Parcel Shop carrier: code: dhl name: DHL logo_url: >- https://cdn.sendcloud.com/global-media/dhl/img/logo.svg icon_url: >- https://cdn.sendcloud.com/global-media/dhl/img/icon.svg carrier_service_point_id: NL-00001 carrier_shop_type: paketshop general_shop_type: servicepoint address: street: Stadhuisplein house_number: '1' postal_code: 5611 EM city: Eindhoven country_code: NL position: latitude: 51.438022 longitude: 5.478543 contact: email: '' phone: '' opening_times: monday: - start_time: '09:00' end_time: '17:00' tuesday: - start_time: '09:00' end_time: '17:00' wednesday: - start_time: '09:00' end_time: '17:00' thursday: - start_time: '09:00' end_time: '17:00' friday: - start_time: '09:00' end_time: '17:00' saturday: null sunday: null is_open_tomorrow: true next_open_at: '2026-03-11T09:00:00+01:00' is_expired: false distance: 412 geocoding: status: partially_matched precision: postal_code formatted_address: 5611, Eindhoven, Noord-Brabant, Nederland AddressNotFound: summary: Address could not be geocoded value: data: results: [] geocoding: status: not_found precision: null formatted_address: null '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/errors' examples: RequiredParameterMissing: summary: Required parameter missing value: errors: - status: '400' code: required detail: Field required source: parameter: country_code InvalidCountryCode: summary: Invalid country code value: errors: - status: '400' code: invalid_choice detail: '"XX" is not a valid country code' source: parameter: country_code InvalidParameterType: summary: Invalid parameter type value: errors: - status: '400' code: invalid detail: >- Input should be a valid number, unable to parse string as a number source: parameter: latitude InvalidEnumChoice: summary: Invalid parameter value value: errors: - status: '400' code: invalid_choice detail: >- Input should be 'servicepoint', 'locker', 'post_office' or 'carrier_depot' source: parameter: general_shop_type MutuallyExclusiveParams: summary: Mutually exclusive parameters used together value: errors: - status: '400' code: validation_error detail: >- carrier_code and use_integration_carriers are mutually exclusive source: parameter: carrier_code MutuallyInclusiveParams: summary: Incomplete parameter group value: errors: - status: '400' code: validation_error detail: >- ne_latitude, ne_longitude, sw_latitude, and sw_longitude must all be provided together source: parameter: ne_latitude ServicePointsDisabledForIntegration: summary: Service points not enabled value: errors: - status: '400' code: validation_error detail: >- Service points are not enabled for the authenticated integration. CarrierNotSupported: summary: Carrier not supported value: errors: - status: '400' code: validation_error detail: >- Service points are not supported for the requested carriers: acme. '503': description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/errors' examples: AddressLookupFailed: summary: Address could not be resolved value: errors: - status: '503' code: null detail: >- The address could not be resolved at this time. Try again later. /service-points/{service_point_id}: parameters: - name: service_point_id in: path required: true schema: type: integer format: int64 minimum: 1 example: 1000001 description: Unique Sendcloud identifier of the service point. get: summary: Retrieve a service point description: Retrieve a single service point. x-mint: href: /api/v3/service-points/retrieve-a-service-point metadata: tag: Beta content: >- Returns a single service point. This endpoint can be used to retrieve the latest available details for a specific service point after it has been selected or stored in a checkout or delivery flow. The returned service point may be expired. Check `is_expired` before using the result in your flow. security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] operationId: sc-public-v3-servicepoints-get-service_point tags: - Service Points responses: '200': description: OK content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ServicePointDetail' required: - data examples: ServicePointDetail: summary: A single service point value: data: id: 1000002 name: Stationsplein Parcel Locker carrier: code: postnl name: PostNL logo_url: >- https://cdn.sendcloud.com/global-media/postnl/img/logo.svg icon_url: >- https://cdn.sendcloud.com/global-media/postnl/img/icon.svg carrier_service_point_id: NL-00002 carrier_shop_type: pakketautomaat general_shop_type: locker address: street: Stationsplein house_number: '1' postal_code: 5611 AC city: Eindhoven country_code: NL position: latitude: 51.443218 longitude: 5.4816 contact: email: '' phone: '' opening_times: monday: - start_time: '10:00' end_time: '21:00' tuesday: - start_time: '10:00' end_time: '21:00' wednesday: - start_time: '10:00' end_time: '21:00' thursday: null friday: - start_time: '10:00' end_time: '21:00' saturday: - start_time: '10:00' end_time: '21:00' sunday: null is_open_tomorrow: false next_open_at: '2026-03-13T10:00:00+01:00' is_expired: false '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/errors' examples: ServicePointNotFound: summary: Service point not found value: errors: - status: '404' code: not_found detail: The service point could not be found /service-points/{service_point_id}/check-availability: parameters: - name: service_point_id in: path required: true schema: type: integer format: int64 minimum: 1 example: 1000001 description: Unique Sendcloud identifier of the service point. post: summary: Check availability of a service point description: Check whether a service point is currently available. x-mint: href: /api/v3/service-points/check-availability-of-a-service-point metadata: tag: Beta content: >- Service point availability can change over time. Although we try our best to return only service points that are considered up to date, search results may still include service points that are no longer available. The way availability is checked varies by carrier. For some carriers, this involves a live availability check with the carrier. For others, availability is determined using our best estimate based on the information available at the time of the request. operationId: sc-public-v3-servicepoints-post-check_availability security: - HTTPBasicAuth: [] - OAuth2ClientCreds: [] tags: - Service Points responses: '200': description: OK content: application/json: schema: type: object properties: data: type: object properties: is_available: type: boolean description: >- Indicates whether the service point is currently available. example: true required: - is_available required: - data examples: Available: summary: Service point is available value: data: is_available: true NotAvailable: summary: Service point is not available value: data: is_available: false '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/errors' examples: ServicePointNotFound: summary: Service point not found value: errors: - status: '404' code: not_found detail: The service point could not be found components: schemas: GeocodingResult: title: Geocoding Result type: object description: >- Explains how the address provided in the request was geocoded. This helps you understand how reliable the geocoded location is for the returned results. The `status` field tells you the outcome: - `matched` - The address was successfully geocoded. See `precision` for the match level. - `partially_matched` - The address was resolved, but not all parts of the input contributed to the match. - `not_found` - The address could not be geocoded. In this case, no service points are returned. When the status is `matched` or `partially_matched`, `precision` indicates how specifically the address was matched. You can use it to decide whether the result is accurate enough for your use case. For example, if the address was matched only at `city` level, you may want to ask the customer to refine the address before showing service points. properties: status: type: string enum: - matched - partially_matched - not_found description: Indicates whether and how the provided address was geocoded. precision: type: - string - 'null' enum: - house_number - street - postal_code - city - region description: >- Indicates how precisely the address was geocoded when a match was found: - `house_number` - Matched to a specific house number. - `street` - Matched to a street, but not to a specific house number. - `postal_code` - Matched to a postal code area. - `city` - Matched only to a city. - `region` - Matched only to a broader region, such as a state or province. This list is not exhaustive and may be extended with new values in the future. Integrations should be able to handle values they do not recognize. formatted_address: type: - string - 'null' example: Stadhuisplein 10, 5611 EM Eindhoven, Nederland description: >- Formatted address of the geocoded location. This is the canonical version of the address matched from the input. It can be used to confirm that a free-form or structured address was interpreted as expected. The matched location may differ from the location intended in the request, for example when the address was only partially matched because of a spelling issue or unrecognized address parts. required: - status - precision - formatted_address ServicePointCarrier: title: Service Point Carrier type: object description: Information about the carrier that operates the service point. properties: code: type: string example: postnl description: Unique identifier of the carrier. name: type: string example: PostNL description: Name of the carrier. logo_url: type: - string - 'null' format: uri example: https://cdn.sendcloud.com/global-media/postnl/img/logo.svg description: URL of the carrier logo. Can be `null` when no logo is available. icon_url: type: - string - 'null' format: uri example: https://cdn.sendcloud.com/global-media/postnl/img/icon.svg description: >- URL of the carrier icon. This is usually more suitable than `logo_url` for compact UI elements such as map markers or list items. Can be `null` when no icon is available. required: - code - name - logo_url - icon_url OpeningTime: title: Opening Time type: object description: Opening hours for a specific time range. properties: start_time: type: string description: Start of the opening time range in 24-hour format (`HH:mm`). example: '09:00' end_time: type: string description: End of the opening time range in 24-hour format (`HH:mm`). example: '18:00' required: - start_time - end_time OpeningTimes: title: Opening Times type: object description: >- Opening hours of the service point for the current week. These hours reflect the service point's actual availability this week and may differ from a typical week due to public holidays or other temporary schedule changes. properties: monday: anyOf: - type: array items: $ref: '#/components/schemas/OpeningTime' minItems: 1 - type: 'null' description: >- Opening hours for Monday. `null` if the service point is closed that day. tuesday: anyOf: - type: array items: $ref: '#/components/schemas/OpeningTime' minItems: 1 - type: 'null' description: >- Opening hours for Tuesday. `null` if the service point is closed that day. wednesday: anyOf: - type: array items: $ref: '#/components/schemas/OpeningTime' minItems: 1 - type: 'null' description: >- Opening hours for Wednesday. `null` if the service point is closed that day. thursday: anyOf: - type: array items: $ref: '#/components/schemas/OpeningTime' minItems: 1 - type: 'null' description: >- Opening hours for Thursday. `null` if the service point is closed that day. friday: anyOf: - type: array items: $ref: '#/components/schemas/OpeningTime' minItems: 1 - type: 'null' description: >- Opening hours for Friday. `null` if the service point is closed that day. saturday: anyOf: - type: array items: $ref: '#/components/schemas/OpeningTime' minItems: 1 - type: 'null' description: >- Opening hours for Saturday. `null` if the service point is closed that day. sunday: anyOf: - type: array items: $ref: '#/components/schemas/OpeningTime' minItems: 1 - type: 'null' description: >- Opening hours for Sunday. `null` if the service point is closed that day. required: - monday - tuesday - wednesday - thursday - friday - saturday - sunday ServicePointDetail: title: Service Point type: object description: Information about a service point. properties: id: type: integer format: int64 example: 1000001 description: Unique Sendcloud identifier of the service point. name: type: string example: Stationsplein Parcel Locker description: Name of the service point. carrier: $ref: '#/components/schemas/ServicePointCarrier' carrier_service_point_id: type: string example: NL-00001 description: Carrier-specific identifier of the service point. carrier_shop_type: type: - string - 'null' example: PBA description: |- Carrier-specific shop type of the service point. For example: `packStation` (DHL), `PBA` (PostNL), `400` (DPD). Can be `null` when this information is not available. general_shop_type: type: - string - 'null' enum: - servicepoint - locker - post_office - carrier_depot example: locker description: >- General shop type of the service point. Carrier-specific shop types vary per carrier and are mapped to a smaller set of common values. - `servicepoint` - Standard service point or parcel shop. - `locker` - Automated parcel locker. - `post_office` - Post office location. - `carrier_depot` - Carrier depot or distribution center. Can be `null` when the carrier-specific shop type does not map to one of these values. This mapping is maintained manually, so newer or less common carriers may not have a mapping yet. This list is not exhaustive and may be extended with new values in the future. address: $ref: '#/components/schemas/ServicePointAddress' position: $ref: '#/components/schemas/ServicePointPosition' contact: $ref: '#/components/schemas/ServicePointContact' opening_times: $ref: '#/components/schemas/OpeningTimes' is_open_tomorrow: type: boolean example: true description: >- Indicates whether the service point is expected to be open tomorrow based on its opening hours for the current week. next_open_at: type: - string - 'null' format: date-time example: '2026-03-11T09:00:00+01:00' description: |- Date and time when the service point is expected to open next. Can be `null` when no upcoming opening time is available. is_expired: type: boolean example: false description: >- Indicates whether the service point details are considered expired. We regularly refresh service point details based on carrier updates. Because update frequency and coverage vary by carrier, it is not always possible to guarantee that every service point is fully up to date. When `is_expired` is `true`, the service point was last refreshed long enough ago that we can no longer be confident the details are still up to date or that the service point still exists. This field reflects freshness only. It does not indicate whether the service point is currently open or available. required: - id - name - carrier - carrier_service_point_id - carrier_shop_type - general_shop_type - address - position - contact - opening_times - is_open_tomorrow - next_open_at - is_expired ServicePointAddress: title: Service Point Address type: object description: Address of the service point. properties: street: type: string example: Stationsplein description: Street of the service point address. house_number: type: string example: '1' description: House number of the service point address. postal_code: type: string example: 5611 AC description: Postal code of the service point address. city: type: string example: Eindhoven description: City of the service point address. country_code: type: string example: NL description: >- Country code of the service point address as an ISO 3166-1 alpha-2 code. required: - street - house_number - postal_code - city - country_code ServicePointPosition: title: Service Point Position type: object description: Geographic coordinates of the service point. properties: latitude: type: number format: double example: 51.443218 description: Latitude of the service point. longitude: type: number format: double example: 5.4816 description: Longitude of the service point. required: - latitude - longitude ServicePointContact: title: Service Point Contact type: object description: Contact information for the service point. properties: email: type: string example: '' description: >- Contact email address of the service point. Empty when not available. phone: type: string example: '' description: Contact phone number of the service point. Empty when not available. required: - email - phone ServicePoint: title: Service Point Search Result allOf: - $ref: '#/components/schemas/ServicePointDetail' - type: object description: Service point returned in a list response. properties: distance: type: - integer - 'null' example: 85 description: >- Distance in meters from the reference point to the service point. `null` when no reference point was provided. required: - distance ErrorObject: title: Error type: object description: Error in a JSON:API error format properties: id: type: string description: A unique identifier for the error. links: type: object description: >- A set of hyperlinks that provide additional information about the error. properties: about: type: string description: A URL that provides additional information about the error. status: type: string format: int32 description: The HTTP status code of the error. minLength: 1 code: type: string description: A unique error code for the error, in snake case format. minLength: 1 enum: - unknown_field - invalid - forbidden - invalid_choice - min_value - 'null' - not_found - required - not_a_list - non_field_errors - authentication_failed - validation_error - parcel_announcement_error title: type: string description: A short, human-readable summary of the error. minLength: 1 detail: type: string description: A human-readable explanation of the error. minLength: 1 source: type: object description: >- An object that identifies the source of the error within the request payload. properties: pointer: type: string description: >- A `JSON` pointer to the location of the error within the request payload. parameter: type: string description: The name of the `query` parameter that caused the error. header: type: string description: The name of the `header` parameter that caused the error. meta: type: object description: Additional metadata about the error. errors: title: Errors type: object description: A standardized format for errors in JSON:API responses. properties: errors: type: - array - object items: type: object allOf: - $ref: '#/components/schemas/ErrorObject' required: - status - code - detail securitySchemes: HTTPBasicAuth: type: http description: >- Basic Authentication using API key and secrets is currently the main authentication mechanism. scheme: basic OAuth2ClientCreds: type: oauth2 description: >- OAuth2 is a standardized protocol for authorization that allows users to share their private resources stored on one site with another site without having to provide their credentials. OAuth2 Client Credentials Grant workflow. This workflow is typically used for server-to-server interactions that require authorization to access specific resources. flows: clientCredentials: tokenUrl: https://account.sendcloud.com/oauth2/token/ scopes: api: Default OAuth scope required to access Sendcloud API.