Compare commits

4 Commits
Author SHA1 Message Date
javier 4cbac015b1 Some fixes to the live test suite (#32)
CI / Build and test (push) Canceled after 0s
Documentation / Build documentation (push) Canceled after 0s
Documentation / Deploy to GitHub Pages (push) Canceled after 0s
This PR contains the work done to fix the live test suite, which started failing once the Amiibo API began returning Switch 2 games, and tidies the test suite around it.

### Changes

- **Live tests:** replaced the assertion that the first amiibo has no Switch 2 games with a usage check, matching the other platforms. The live data now includes Switch 2 entries for most amiibos.
- **Live tests:** refreshed the minimum item counts and the earliest accepted last-updated date to the values observed in October 2026, and documented in the README how to refresh them.
- **All tests:** moved test descriptions from `@Test("...")` strings into backticked function names, and aligned every case on the same GIVEN/WHEN/THEN structure.
- **Live client:** replaced the TODO about DocC inherited docs with a note. The compiler does not inherit documentation for protocol witnesses, so the repeated doc comments stay on purpose.

Reviewed-on: #32
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
2026-10-25 21:53:31 +00:00
javier 13b9c74a38 Few fixes and improvements to the library, plus Github Actions setup (#31)
CI / Build and test (push) Canceled after 0s
Documentation / Build documentation (push) Canceled after 0s
Documentation / Deploy to GitHub Pages (push) Canceled after 0s
This PR contains the work done to fix a cancellation-mapping bug in `AmiiboLiveClient`, bring the client under offline test coverage, add the conformances SwiftUI and persistence need, and moves CI and documentation publishing to GitHub Actions. All public API changes are additive.

### Fix

- `AmiiboLiveClient` reported an early task cancellation as `.unknown("CancellationError()")`. The OpenAPI runtime wraps every error in `ClientError`, so the `CancellationError` check never matched; it now also checks the wrapped error and throws `.cancelled`.

### Tests

- `ThrowingTransport` and `StubTransport` test doubles let the live client run offline. New tests cover error mapping, HTTP status → error mapping, `oneOf` object-vs-list decoding, `"amiibo": null`, sorting, filter → query encoding, `Platform`/`Release` mapping, and the date transcoder.
- Models gained `package` memberwise initializers so tests can build real fixtures without `@testable`. These are not public API.
- The test target now depends on `OpenAPIRuntime` and `HTTPTypes` (both already in the dependency graph).

### API
- Models are `Codable` and `Identifiable` (`Amiibo.id` is its `identifier`; the key/name models use `key`).
- Filters are `Hashable`.

### Documentation
- Doc comments trimmed library-wide; one repeated `- Throws:` sentence appeared 24 times. `Library.md` and the README tightened to match.

### CI and docs publishing
- `ci.yml`: build and offline tests on PRs and pushes to `main`.
- `live-tests.yml`: weekly and on-demand run against the live API.
- `docs.yml`: builds DocC on PRs, deploys to GitHub Pages on `main`. Pinned to Xcode 26 because swift-docc-plugin 1.5.0 fails to launch its tools under Xcode 27.
- The generated `docs/` folder (327 files) is removed from the repository and ignored.

Reviewed-on: #31
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
2026-10-25 19:54:30 +00:00
javier 44bfaca553 Improved the documentation throughout the library (#30)
This PR contains the work done to improve the overall documentation effort throughout the library.

Reviewed-on: #30
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
2026-09-14 10:13:41 +00:00
javier aa135cb04a Updated the Package file in the library to relax the "swift-openapi-generator" dependency. (#29)
Reviewed-on: #29
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
2026-09-14 09:41:45 +00:00
366 changed files with 1567 additions and 1013 deletions

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
# ===----------------------------------------------------------------------===
#
# This source file is part of the Amiibo Service open source project
#
# Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
# Licensed under Apache license v2.0
#
# See LICENSE for license information
# See CONTRIBUTORS for the list of Amiibo Service project authors
#
# SPDX-License-Identifier: Apache-2.0
#
# ===----------------------------------------------------------------------===
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: Build and test
runs-on: macos-latest
steps:
- name: Check out
uses: actions/checkout@v4
- name: Select Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Show toolchain
run: swift --version
- name: Cache build
uses: actions/cache@v4
with:
path: .build
key: spm-${{ runner.os }}-${{ hashFiles('Package.resolved') }}
restore-keys: spm-${{ runner.os }}-
- name: Build
run: make lib-build
- name: Test
run: make lib-test
+77
View File
@@ -0,0 +1,77 @@
# ===----------------------------------------------------------------------===
#
# This source file is part of the Amiibo Service open source project
#
# Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
# Licensed under Apache license v2.0
#
# See LICENSE for license information
# See CONTRIBUTORS for the list of Amiibo Service project authors
#
# SPDX-License-Identifier: Apache-2.0
#
# ===----------------------------------------------------------------------===
name: Documentation
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: docs-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build documentation
runs-on: macos-latest
steps:
- name: Check out
uses: actions/checkout@v4
# Pinned: swift-docc-plugin 1.5.0 fails to launch its tools under Xcode 27 ("Bad CPU type in executable").
- name: Select Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '26'
- name: Show toolchain
run: swift --version
- name: Cache build
uses: actions/cache@v4
with:
path: .build
key: spm-${{ runner.os }}-${{ hashFiles('Package.resolved') }}
restore-keys: spm-${{ runner.os }}-
- name: Generate
run: make doc-generate-github
- name: Upload
uses: actions/upload-pages-artifact@v3
with:
path: docs
deploy:
name: Deploy to GitHub Pages
if: github.event_name != 'pull_request'
needs: build
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
steps:
- name: Deploy
id: deploy
uses: actions/deploy-pages@v4
+52
View File
@@ -0,0 +1,52 @@
# ===----------------------------------------------------------------------===
#
# This source file is part of the Amiibo Service open source project
#
# Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
# Licensed under Apache license v2.0
#
# See LICENSE for license information
# See CONTRIBUTORS for the list of Amiibo Service project authors
#
# SPDX-License-Identifier: Apache-2.0
#
# ===----------------------------------------------------------------------===
name: Live tests
on:
schedule:
# Every Monday at 06:00 UTC.
- cron: '0 6 * * 1'
workflow_dispatch:
permissions:
contents: read
jobs:
test:
name: Test against the live service
runs-on: macos-latest
steps:
- name: Check out
uses: actions/checkout@v4
- name: Select Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Show toolchain
run: swift --version
- name: Cache build
uses: actions/cache@v4
with:
path: .build
key: spm-${{ runner.os }}-${{ hashFiles('Package.resolved') }}
restore-keys: spm-${{ runner.os }}-
- name: Test
run: make lib-test
env:
AMIIBO_LIVE_TESTS: '1'
+1
View File
@@ -49,3 +49,4 @@ Packages/
# DocC documentation
*.doccarchive
docs/
+5 -2
View File
@@ -32,9 +32,10 @@ let package = Package(
)
],
dependencies: [
.package(url: "https://github.com/apple/swift-openapi-generator.git", exact: "1.11.0"),
.package(url: "https://github.com/apple/swift-openapi-generator.git", from: "1.11.0"),
.package(url: "https://github.com/apple/swift-openapi-runtime", from: "1.5.0"),
.package(url: "https://github.com/apple/swift-openapi-urlsession", from: "1.0.2"),
.package(url: "https://github.com/apple/swift-http-types", from: "1.0.0"),
.package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.1.0"),
],
targets: [
@@ -52,7 +53,9 @@ let package = Package(
.testTarget(
name: AmiiboService.test,
dependencies: [
.byName(name: AmiiboService.target)
.byName(name: AmiiboService.target),
.product(name: "HTTPTypes", package: "swift-http-types"),
.product(name: "OpenAPIRuntime", package: "swift-openapi-runtime")
],
path: "Tests/AmiiboService"
),
+52 -23
View File
@@ -1,20 +1,25 @@
[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Frock-n-code%2Famiibo-service%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/rock-n-code/amiibo-service)
[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Frock-n-code%2Famiibo-service%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/rock-n-code/amiibo-service)
[![](https://github.com/rock-n-code/amiibo-service/actions/workflows/ci.yml/badge.svg)](https://github.com/rock-n-code/amiibo-service/actions/workflows/ci.yml)
# Amiibo Service
A library written entirely with [Swift](https://www.swift.org) that provides everything the developer needs to interact with the [Amiibo API](https://www.amiiboapi.org) backend service.
A Swift client for the [Amiibo API](https://www.amiiboapi.org).
## Requirements
- Swift 6.2 or later
- iOS 13, macOS 10.15, tvOS 13, visionOS 1, or watchOS 6 or later
## Installation
To use this library, add it as a dependency in the `Package.swift` file:
Add the package and the `AmiiboService` product to `Package.swift`:
```swift
let package = Package(
// name, platforms, products, etc.
dependencies: [
.package(url: "https://github.com/rock-n-code/amiibo-service", from: "1.4.2"),
// other dependencies
.package(url: "https://github.com/rock-n-code/amiibo-service", from: "2.0.0"),
],
targets: [
.target(
@@ -22,16 +27,12 @@ let package = Package(
dependencies: [
.product(name: "AmiiboService", package: "amiibo-service"),
]
)
// other targets
),
]
)
```
It is also possible to use this library with your app in Xcode by adding it as a dependency in your Xcode project.
> [!IMPORTANT]
> Swift 6.2 or higher is required in order to build this library.
In Xcode, add the package URL under **File › Add Package Dependencies…**.
## Usage
@@ -40,25 +41,41 @@ import AmiiboService
let service = AmiiboService()
// Fetch all amiibos
// All amiibos
let amiibos = try await service.getAmiibos()
// Fetch amiibos filtered by name
// Amiibos whose name contains "zelda"
let zeldaAmiibos = try await service.getAmiibos(.init(name: "zelda"))
// Fetch amiibo series, types, game characters, and game series
// Amiibo series, types, game characters, and game series
let series = try await service.getAmiiboSeries()
let types = try await service.getAmiiboTypes()
let characters = try await service.getGameCharacters()
let gameSeries = try await service.getGameSeries()
// Fetch the last updated timestamp
// Date of the last data update (UTC)
let lastUpdated = try await service.getLastUpdated()
```
Results are sorted in ascending order by identifier (amiibos) or key (everything else). Models are `Hashable`, `Codable`, and `Identifiable`; filters are `Hashable`.
## Error handling
Every call throws `AmiiboServiceError`. When nothing matches, `getAmiibos(_:)` returns an empty array, while the other list calls throw `AmiiboServiceError.notFound`:
```swift
do throws(AmiiboServiceError) {
let series = try await service.getAmiiboSeries(.init(key: "0x01"))
} catch .notFound {
// No amiibo series has this key.
} catch {
// .badRequest, .cancelled, .decoding, .notAvailable, .undocumented, or .unknown
}
```
## Caching
The [Amiibo API](https://www.amiiboapi.org) recommends that consumers who call the API regularly implement caching on their systems. Pass a custom `URLSessionTransport` with a cache-configured `URLSession` to `AmiiboLiveClient`:
The library has no built-in cache. The Amiibo API asks regular consumers to cache responses. To do that, give `AmiiboLiveClient` a transport backed by a `URLCache`:
```swift
import OpenAPIURLSession
@@ -83,12 +100,12 @@ let service = AmiiboService(
## Testing
The `AmiiboClient` protocol enables creating custom mock clients for unit testing without network calls. Conform to `AmiiboClient` and inject it into `AmiiboService` via its `init(client:)` initializer. Since `AmiiboClient` refines `Sendable`, conforming types must be safe to share across concurrency domains:
To test without network access, pass a mock `AmiiboClient` to `AmiiboService(client:)`. `AmiiboClient` refines `Sendable`, so the mock must be `Sendable`, too:
```swift
import AmiiboService
struct MyMockClient: AmiiboClient {
struct MockClient: AmiiboClient {
var error: AmiiboServiceError?
func getAmiibos(
@@ -98,22 +115,34 @@ struct MyMockClient: AmiiboClient {
return []
}
// Implement remaining protocol requirements...
// Implement the remaining requirements...
}
let service = AmiiboService(client: MyMockClient())
let service = AmiiboService(client: MockClient())
```
### Running the test suite
## Development
The unit tests based on a mock client run offline by default. The tests against the live service are skipped unless the `AMIIBO_LIVE_TESTS` environment variable is set to `1`, either in the environment when testing from the command line:
Run `make` to list the available tasks for building, testing, and generating documentation.
The test suite runs offline by default. Tests against the live service run only if `AMIIBO_LIVE_TESTS` is set to `1`:
```shell
AMIIBO_LIVE_TESTS=1 swift test
```
or in the `Test` action of the scheme when testing from Xcode.
In Xcode, set the variable in the scheme's **Test** action.
The live tests compare the responses against baselines recorded from the service: minimum item counts per endpoint and the earliest accepted last-updated date. These live in the `Int` extension at the bottom of `AmiiboServiceLiveTests.swift` and in the `get the last updated timestamp` test. Refresh them occasionally by fetching the current totals and the current timestamp from the service, then updating the constants and their `as of` notes:
```shell
for endpoint in amiibo amiiboseries type character gameseries; do
printf '%s: ' "$endpoint"
curl -s "https://www.amiiboapi.org/api/$endpoint/" | python3 -c 'import json,sys; print(len(json.load(sys.stdin)["amiibo"]))'
done
curl -s https://www.amiiboapi.org/api/lastupdated/
```
## Documentation
Please refer to the [online documentation](https://rock-n-code.github.io/amiibo-service/documentation/amiiboservice/) for further information about this library.
See the [online documentation](https://rock-n-code.github.io/amiibo-service/documentation/amiiboservice/).
@@ -1,25 +1,22 @@
# ``AmiiboService``
A library that provides everything the developer needs to interact with the **Amiibo API** backend service.
A Swift client for the Amiibo API.
## Overview
The `amiibo-service` library is a package that allows the developer to interact with the [Amiibo API](https://www.amiiboapi.org) backend service seamlessly, by not only providing the *service* type but also any possible *models*, *filters*, *errors* and *interfaces* types that might be needed during implementation.
`AmiiboService` fetches data from the [Amiibo API](https://www.amiiboapi.org) and returns it as Swift models.
## Design
Although it could have been possible to generate a one-to-one RESTful client based on the Open API specification document that describe the available endpoints of the backend service, it was decided to design a `AmiiboService` service type that removes the complexities of the API design imposed by the backend service, and provides the developer with a simple interface, and a seamless experience.
``AmiiboService`` offers one method per resource: each takes a typed filter, returns sorted models, and throws ``AmiiboServiceError``.
## Installation
To use the `AmiiboService` library with your package, then add it as a dependency in the `Package.swift` file:
Add the package and the `AmiiboService` product to `Package.swift`:
```swift
let package = Package(
// name, platforms, products, etc.
dependencies: [
.package(url: "https://github.com/rock-n-code/amiibo-service", from: "2.0.0"),
// other dependencies
],
targets: [
.target(
@@ -27,48 +24,59 @@ let package = Package(
dependencies: [
.product(name: "AmiiboService", package: "amiibo-service"),
]
)
// other targets
),
]
)
```
It is also possible to use the `AmiiboService` library with your app in Xcode, then add it as a dependency in your Xcode project.
In Xcode, add the package URL under **File › Add Package Dependencies…**.
> important: Swift 6.2 or higher is required in order to compile this library.
> Important: Requires Swift 6.2 or later, and iOS 13, macOS 10.15, tvOS 13, visionOS 1, or watchOS 6 or later.
## Usage
Create an ``AmiiboService`` instance and call any of its endpoints. Each endpoint accepts an optional filter and, when omitted, returns the full set of results:
Create an ``AmiiboService`` and call its methods. When you omit the filter, the method returns every item:
```swift
import AmiiboService
let service = AmiiboService()
// Fetch all amiibos
// All amiibos
let amiibos = try await service.getAmiibos()
// Fetch amiibos filtered by name
// Amiibos whose name contains "zelda"
let zeldaAmiibos = try await service.getAmiibos(.init(name: "zelda"))
// Fetch amiibo series, types, game characters, and game series
// Amiibo series, types, game characters, and game series
let series = try await service.getAmiiboSeries()
let types = try await service.getAmiiboTypes()
let characters = try await service.getGameCharacters()
let gameSeries = try await service.getGameSeries()
// Fetch the last updated timestamp
// Date of the last data update (UTC)
let lastUpdated = try await service.getLastUpdated()
```
Results are sorted in ascending order by ``Amiibo/identifier`` or by `key`.
## Error handling
Every method throws ``AmiiboServiceError``. When nothing matches, ``AmiiboService/getAmiibos(_:)`` returns an empty array, while the other list methods throw ``AmiiboServiceError/notFound``:
```swift
do throws(AmiiboServiceError) {
let series = try await service.getAmiiboSeries(.init(key: "0x01"))
} catch .notFound {
// No amiibo series has this key.
} catch {
// .badRequest, .cancelled, .decoding, .notAvailable, .undocumented, or .unknown
}
```
## Caching
The [Amiibo API](https://www.amiiboapi.org) recommends that consumers who call the API regularly implement caching on their systems. This library does not include a built-in cache, leaving the choice of caching strategy to the consumer. The following examples show two common approaches.
### URLCache on the transport layer
Pass a custom `URLSessionTransport` with a cache-configured `URLSession` to ``AmiiboLiveClient``:
The library has no built-in cache, and the Amiibo API asks regular consumers to cache responses. To cache at the HTTP level, give ``AmiiboLiveClient`` a transport backed by a `URLCache`:
```swift
import OpenAPIURLSession
@@ -91,20 +99,16 @@ let service = AmiiboService(
)
```
This leverages HTTP cache headers from the server and persists cached responses to disk.
### Application-level caching
Alternatively, cache the results returned by ``AmiiboService`` directly in your application using any storage mechanism that fits your needs, such as an in-memory dictionary, a database, or a file-based store.
Models are `Codable`, so you can also store them yourself.
## Testing
The ``AmiiboClient`` protocol enables creating custom mock clients for testing, eliminating the need for network calls in unit tests. Conform to ``AmiiboClient`` and return stubbed data or throw ``AmiiboServiceError`` errors to verify your application's behavior:
To test without network access, pass a mock ``AmiiboClient`` to ``AmiiboService/init(client:)``. ``AmiiboClient`` refines `Sendable`, so the mock must be `Sendable`, too:
```swift
import AmiiboService
struct MyMockClient: AmiiboClient {
struct MockClient: AmiiboClient {
var error: AmiiboServiceError?
func getAmiibos(
@@ -114,22 +118,10 @@ struct MyMockClient: AmiiboClient {
return []
}
// Implement remaining protocol requirements...
// Implement the remaining requirements...
}
let service = AmiiboService(client: MyMockClient())
```
Inject the mock client into ``AmiiboService`` via its ``AmiiboService/init(client:)`` initializer to test how your code handles empty results, specific errors, or any other scenario without relying on the live backend.
## Tasks
This library offers a set of ready-to-use tasks that simplify the interaction with the library, which the developer can use from any `Terminal` application.
> Tip: To show the available list of tasks, plus display some explanations about each and every one of them; please enter the following command:
```bash
$ make
let service = AmiiboService(client: MockClient())
```
## Topics
@@ -18,13 +18,11 @@ extension DateFormatter {
// MARK: Properties
/// An ISO date formatter.
///
/// This formatter implements the `yyyy-MM-dd` date format.
/// An ISO date formatter for the `yyyy-MM-dd` format.
static let isoDate: DateFormatter = {
let formatter = DateFormatter()
// A fixed-format date requires the POSIX locale, as the user's locale or 12/24-hour setting could otherwise alter the parsing.
// The POSIX locale keeps the user's locale and 12/24-hour setting from altering fixed-format parsing.
formatter.locale = .init(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
formatter.timeZone = .init(secondsFromGMT: 0)
@@ -32,14 +30,13 @@ extension DateFormatter {
return formatter
}()
/// An ISO timestamp formatter.
/// An ISO timestamp formatter for the `yyyy-MM-dd'T'HH:mm:ss.SSSSSS` format.
///
/// This formatter implements the `yyyy-MM-dd'T'HH:mm:ss.SSSSSS` custom date format.
/// Within the context of this library, this formatter is solely used to decode a date formatted as a timestamp that is returned by the ``AmiiboService/getLastUpdated()`` function.
/// Used only to decode the timestamp returned by ``AmiiboService/getLastUpdated()``.
static let isoTimestamp: DateFormatter = {
let formatter = DateFormatter()
// A fixed-format date requires the POSIX locale, as the user's locale or 12/24-hour setting could otherwise alter the parsing.
// The POSIX locale keeps the user's locale and 12/24-hour setting from altering fixed-format parsing.
formatter.locale = .init(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
formatter.timeZone = .init(secondsFromGMT: 0)
@@ -12,8 +12,8 @@
//
// ===----------------------------------------------------------------------===
/// A protocol that defines filters containing optional `key` and/or `name` values for querying resources.
protocol KeyNameFilter {
/// A protocol for filters with optional `key` and `name` values.
protocol KeyNameFilter: Hashable {
// MARK: Properties
@@ -13,7 +13,7 @@
// ===----------------------------------------------------------------------===
/// A protocol that defines models containing a `key` and `name` pair.
protocol KeyNameModel: Sendable, Hashable {
protocol KeyNameModel: Sendable, Hashable, Codable, Identifiable {
// MARK: Properties
@@ -15,15 +15,15 @@
import Foundation
import OpenAPIRuntime
/// A type that allows the decoding and encoding of ISO dates, supporting both the `yyyy-MM-dd'T'HH:mm:ss.SSSSSS` timestamp format and the `yyyy-MM-dd` date-only format.
/// A transcoder for ISO dates in the `yyyy-MM-dd'T'HH:mm:ss.SSSSSS` timestamp and `yyyy-MM-dd` date-only formats.
struct ISODateTimeTranscoder {
// MARK: Properties
/// A formatter to use to decode and encode ISO timestamp dates.
/// The ISO timestamp formatter.
private let timestampFormatter: DateFormatter = .isoTimestamp
/// A formatter to use to decode and encode ISO date-only strings.
/// The ISO date-only formatter.
private let dateFormatter: DateFormatter = .isoDate
}
@@ -34,17 +34,13 @@ extension ISODateTimeTranscoder: DateTranscoder {
// MARK: Functions
/// Encodes a date into an ISO timestamp string.
/// - Parameter date: A date to encode.
/// - Returns: A string representation of the date in `yyyy-MM-dd'T'HH:mm:ss.SSSSSS` format.
/// Encodes a date as an ISO timestamp string.
func encode(_ date: Date) throws -> String {
timestampFormatter.string(from: date)
}
/// Decodes an ISO date string into a date, trying the timestamp format first and falling back to the date-only format.
/// - Parameter string: A string to decode.
/// - Returns: A date parsed from the string.
/// - Throws: A `DecodingError` if the string cannot be parsed into a valid date.
/// Decodes an ISO date string, trying the timestamp format before the date-only one.
/// - Throws: A `DecodingError` if the string matches neither format.
func decode(_ string: String) throws -> Date {
if let date = timestampFormatter.date(from: string) {
return date
@@ -16,16 +16,16 @@ import Foundation
import OpenAPIRuntime
import OpenAPIURLSession
/// A type that implements a live client to the [Amiibo API](https://www.amiiboapi.org) online service.
/// A live client for the [Amiibo API](https://www.amiiboapi.org).
///
/// This client maps any transport error or unsuccessful HTTP response to an ``AmiiboServiceError`` error, and sorts the items of the list responses in ascending order by identifier or key.
/// It maps transport errors and unsuccessful responses to ``AmiiboServiceError``, and sorts list results by identifier or key.
public struct AmiiboLiveClient: Sendable {
// MARK: Constants
/// The base URL of the live service, resolved once from the server defined in the OpenAPI specification.
/// The base URL of the live service, from the OpenAPI specification.
///
/// The validity of the URL is guaranteed by the bundled `openapi.yaml` specification and enforced by a unit test, so resolution is not expected to fail at runtime.
/// A unit test guards this URL, so resolution is not expected to fail at runtime.
static let serverURL: URL = {
guard let url = try? Servers.Server1.url() else {
fatalError("The server URL defined in the OpenAPI specification could not be resolved. Verify that the 'openapi.yaml' server definition is valid.")
@@ -41,8 +41,8 @@ public struct AmiiboLiveClient: Sendable {
// MARK: Initializers
/// Initializes this client with a transport for performing HTTP operations.
/// - Parameter transport: A transport that performs HTTP operations. Defaults to a `URLSessionTransport` using the shared session.
/// Initializes this client.
/// - Parameter transport: A transport for HTTP operations. Defaults to a `URLSessionTransport` on the shared session.
public init(transport: any ClientTransport = URLSessionTransport()) {
self.client = .init(
serverURL: Self.serverURL,
@@ -54,16 +54,17 @@ public struct AmiiboLiveClient: Sendable {
}
// MARK: - AmiiboClient
// TODO: Remove the documentation from the functions inside the following extension as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
// NOTE: The `AmiiboClient` documentation is repeated below on purpose, as the compiler does not inherit
// documentation for protocol witnesses and DocC would otherwise render these functions undocumented.
extension AmiiboLiveClient: AmiiboClient {
// MARK: Functions
/// Gets a list of amiibo items based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo items.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getAmiibos(
by filter: AmiiboFilter
) async throws(AmiiboServiceError) -> [Amiibo] {
@@ -71,9 +72,9 @@ extension AmiiboLiveClient: AmiiboClient {
}
/// Gets a list of amiibo series based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo series.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getAmiiboSeries(
by filter: AmiiboSeriesFilter
) async throws(AmiiboServiceError) -> [AmiiboSeries] {
@@ -81,9 +82,9 @@ extension AmiiboLiveClient: AmiiboClient {
}
/// Gets a list of amiibo types based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo types.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getAmiiboTypes(
by filter: AmiiboTypeFilter
) async throws(AmiiboServiceError) -> [AmiiboType] {
@@ -91,9 +92,9 @@ extension AmiiboLiveClient: AmiiboClient {
}
/// Gets a list of game characters based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered game characters.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getGameCharacters(
by filter: GameCharacterFilter
) async throws(AmiiboServiceError) -> [GameCharacter] {
@@ -101,9 +102,9 @@ extension AmiiboLiveClient: AmiiboClient {
}
/// Gets a list of game series based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered game series.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getGameSeries(
by filter: GameSeriesFilter
) async throws(AmiiboServiceError) -> [GameSeries] {
@@ -112,7 +113,7 @@ extension AmiiboLiveClient: AmiiboClient {
/// Gets the date when the data was last updated.
/// - Returns: A last updated date, decoded as UTC.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getLastUpdated() async throws(AmiiboServiceError) -> Date {
try await fetchLastUpdated()
}
@@ -125,10 +126,7 @@ private extension AmiiboLiveClient {
// MARK: Functions
/// Fetches a list of amiibo items based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Returns: A list of fetched amiibo items filtered, if requested.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// Fetches the amiibos matching a filter.
func fetchAmiibos(
_ filter: AmiiboFilter
) async throws(AmiiboServiceError) -> [Amiibo] {
@@ -174,10 +172,7 @@ private extension AmiiboLiveClient {
}
}
/// Fetches a list of amiibo series based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Returns: A list of fetched amiibo series filtered, if requested.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// Fetches the amiibo series matching a filter.
func fetchAmiiboSeries(
_ filter: AmiiboSeriesFilter
) async throws(AmiiboServiceError) -> [AmiiboSeries] {
@@ -210,10 +205,7 @@ private extension AmiiboLiveClient {
}
}
/// Fetches a list of amiibo types based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Returns: A list of fetched amiibo types filtered, if requested.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// Fetches the amiibo types matching a filter.
func fetchAmiiboTypes(
_ filter: AmiiboTypeFilter
) async throws(AmiiboServiceError) -> [AmiiboType] {
@@ -246,10 +238,7 @@ private extension AmiiboLiveClient {
}
}
/// Fetches a list of game characters based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Returns: A list of fetched game characters filtered, if requested.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// Fetches the game characters matching a filter.
func fetchGameCharacters(
_ filter: GameCharacterFilter
) async throws(AmiiboServiceError) -> [GameCharacter] {
@@ -282,10 +271,7 @@ private extension AmiiboLiveClient {
}
}
/// Fetches a list of game series based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Returns: A list of fetched game series filtered, if requested.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// Fetches the game series matching a filter.
func fetchGameSeries(
_ filter: GameSeriesFilter
) async throws(AmiiboServiceError) -> [GameSeries] {
@@ -319,8 +305,6 @@ private extension AmiiboLiveClient {
}
/// Fetches the date when the data was last updated.
/// - Returns: A fetched last updated date, decoded as UTC.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
func fetchLastUpdated() async throws(AmiiboServiceError) -> Date {
let response = try await perform {
try await client.getLastUpdated()
@@ -339,10 +323,7 @@ private extension AmiiboLiveClient {
}
}
/// Performs an API call, mapping any error thrown by the underlying client to an ``AmiiboServiceError`` error.
/// - Parameter operation: A closure that performs the API call.
/// - Returns: The output of the performed API call.
/// - Throws: An ``AmiiboServiceError`` error in case the API call failed.
/// Performs an API call, mapping any error to an ``AmiiboServiceError``.
func perform<Output>(
_ operation: () async throws -> Output
) async throws(AmiiboServiceError) -> Output {
@@ -353,24 +334,23 @@ private extension AmiiboLiveClient {
}
}
/// Maps a list of key-name payloads into a sorted list of models.
/// - Parameter payloads: A list of payloads to map into models.
/// - Returns: A list of models sorted by their keys in ascending order.
/// Maps key-name payloads into models sorted by key.
func makeModels<Model: KeyNameModel>(from payloads: [some KeyNamePayload]) -> [Model] {
payloads
.map { Model($0) }
.sorted { $0.key < $1.key }
}
/// Maps a given error to an ``AmiiboServiceError`` error.
/// - Parameter error: An error to map.
/// - Throws: An ``AmiiboServiceError`` error that corresponds to the given error.
/// Maps an error to the corresponding ``AmiiboServiceError``.
func handle(error: any Error) throws(AmiiboServiceError) -> Never {
switch error {
case is CancellationError:
throw AmiiboServiceError.cancelled
case let clientError as ClientError:
// The underlying client wraps every error, including cancellation, in a `ClientError`.
switch clientError.underlyingError {
case is CancellationError:
throw AmiiboServiceError.cancelled
case is DecodingError:
throw AmiiboServiceError.decoding
case let urlError as URLError:
@@ -14,7 +14,7 @@
import Foundation
/// A representation of all the possible errors that the ``AmiiboService`` service could throw.
/// An error thrown by ``AmiiboService`` and ``AmiiboClient`` methods.
public enum AmiiboServiceError: Error {
/// The request was malformed or contained invalid filter parameters.
case badRequest
@@ -22,13 +22,15 @@ public enum AmiiboServiceError: Error {
case cancelled
/// The response body could not be decoded into the expected model.
case decoding
/// The backend service is currently unreachable due to a network or server issue.
/// The service is unreachable due to a network or server issue.
case notAvailable
/// No results were found matching the given filter criteria.
///
/// When no amiibos match, ``AmiiboService/getAmiibos(_:)`` returns an empty array instead of throwing this error.
case notFound
/// The server returned an undocumented HTTP status code.
case undocumented(_ statusCode: Int)
/// An unexpected error that does not fall into any other category, with a description of the underlying error.
/// Any other error, with a description of the underlying one.
case unknown(_ description: String)
}
@@ -12,55 +12,57 @@
//
// ===----------------------------------------------------------------------===
/// A type that contains values to fine-tune a response when requesting amiibo items.
public struct AmiiboFilter: Sendable {
/// A filter for amiibo requests.
///
/// Values left as `nil` do not restrict the result.
public struct AmiiboFilter: Sendable, Hashable {
// MARK: Properties
/// A game character to filter the result, if any.
/// A game character key or name to match, if any.
public let gameCharacter: String?
/// A game series to filter the result, if any.
/// A game series key or name to match, if any.
public let gameSeries: String?
/// A first part of an identifier to filter the result, if any.
/// The first 8 hexadecimal characters of an identifier to match, if any. Shorter values match as a prefix.
public let head: String?
/// An amiibo identifier to filter the result, if any.
/// A full 16-character hexadecimal identifier to match, if any.
public let identifier: String?
/// An amiibo name to filter the result, if any.
/// An amiibo name, or part of one, to match, if any.
public let name: String?
/// An amiibo series to filter the result, if any.
/// An amiibo series key or name to match, if any.
public let series: String?
/// A flag indicating whether to include games in the response, if any.
/// Whether to include related games in ``Amiibo/platform``. `nil` means `false`.
public let showGames: Bool?
/// A flag indicating whether to include amiibo usages in games in the response, if any.
/// Whether to include related games and their usages in ``Amiibo/platform``. `nil` means `false`.
public let showUsage: Bool?
/// A last part of an identifier to filter the result, if any.
/// The last 8 hexadecimal characters of an identifier to match, if any. Shorter values match as a prefix.
public let tail: String?
/// An amiibo type to filter the result, if any.
/// An amiibo type key or name to match, if any.
public let type: String?
// MARK: Initializers
/// Initializes this filter.
/// - Parameters:
/// - head: A first part of an identifier to filter the result, if any.
/// - tail: A last part of an identifier to filter the result, if any.
/// - identifier: An amiibo identifier to filter the result, if any.
/// - name: An amiibo name to filter the result, if any.
/// - type: An amiibo type to filter the result, if any.
/// - series: An amiibo series to filter the result, if any.
/// - gameCharacter: A game character to filter the result, if any.
/// - gameSeries: A game series to filter the result, if any.
/// - showGames: A flag indicating whether to include games in the response, if any.
/// - showUsage: A flag indicating whether to include amiibo usages in games in the response, if any.
/// - head: The first 8 hexadecimal characters of an identifier to match, if any. Shorter values match as a prefix.
/// - tail: The last 8 hexadecimal characters of an identifier to match, if any. Shorter values match as a prefix.
/// - identifier: A full 16-character hexadecimal identifier to match, if any.
/// - name: An amiibo name, or part of one, to match, if any.
/// - type: An amiibo type key or name to match, if any.
/// - series: An amiibo series key or name to match, if any.
/// - gameCharacter: A game character key or name to match, if any.
/// - gameSeries: A game series key or name to match, if any.
/// - showGames: Whether to include related games in ``Amiibo/platform``. `nil` means `false`.
/// - showUsage: Whether to include related games and their usages in ``Amiibo/platform``. `nil` means `false`.
public init(
head: String? = nil,
tail: String? = nil,
@@ -12,36 +12,36 @@
//
// ===----------------------------------------------------------------------===
/// A type that contains values to fine-tune a response when requesting amiibo series.
/// A filter for amiibo series requests.
public struct AmiiboSeriesFilter: KeyNameFilter, Sendable {
// TODO: Remove the documentation from the properties and initializers of this type as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
// MARK: Properties
/// A key to return, if any.
/// A hexadecimal key in `0x` format, such as `0x01`, to match exactly, if any.
public let key: String?
/// A name to return, if any.
/// A name, or part of one, to match, if any.
public let name: String?
// MARK: Initializers
/// Initializes this filter without key or name values.
/// Initializes a filter that matches every amiibo series.
public init() {
self.key = nil
self.name = nil
}
/// Initializes this filter with a key value.
/// - Parameter key: A key to return.
/// Initializes a filter that matches the amiibo series with a given key.
/// - Parameter key: A hexadecimal key in `0x` format, such as `0x01`.
public init(key: String) {
self.key = key
self.name = nil
}
/// Initializes this filter with a name value.
/// - Parameter name: A name to return.
/// Initializes a filter that matches amiibo series by name.
/// - Parameter name: A name, or part of one.
public init(name: String) {
self.key = nil
self.name = name
@@ -12,36 +12,36 @@
//
// ===----------------------------------------------------------------------===
/// A type that contains values to fine-tune a response when requesting amiibo types.
/// A filter for amiibo type requests.
public struct AmiiboTypeFilter: KeyNameFilter, Sendable {
// TODO: Remove the documentation from the properties and initializers of this type as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
// MARK: Properties
/// A key to return, if any.
/// A hexadecimal key in `0x` format, such as `0x01`, to match exactly, if any.
public let key: String?
/// A name to return, if any.
/// A name, or part of one, to match, if any.
public let name: String?
// MARK: Initializers
/// Initializes this filter without key or name values.
/// Initializes a filter that matches every amiibo type.
public init() {
self.key = nil
self.name = nil
}
/// Initializes this filter with a key value.
/// - Parameter key: A key to return.
/// Initializes a filter that matches the amiibo type with a given key.
/// - Parameter key: A hexadecimal key in `0x` format, such as `0x01`.
public init(key: String) {
self.key = key
self.name = nil
}
/// Initializes this filter with a name value.
/// - Parameter name: A name to return.
/// Initializes a filter that matches amiibo types by name.
/// - Parameter name: A name, or part of one.
public init(name: String) {
self.key = nil
self.name = name
@@ -12,36 +12,36 @@
//
// ===----------------------------------------------------------------------===
/// A type that contains values to fine-tune a response when requesting game characters.
/// A filter for game character requests.
public struct GameCharacterFilter: KeyNameFilter, Sendable {
// TODO: Remove the documentation from the properties and initializers of this type as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
// MARK: Properties
/// A key to return, if any.
/// A hexadecimal key in `0x` format, such as `0x0001`, to match exactly, if any.
public let key: String?
/// A name to return, if any.
/// A name, or part of one, to match, if any.
public let name: String?
// MARK: Initializers
/// Initializes this filter without key or name values.
/// Initializes a filter that matches every game character.
public init() {
self.key = nil
self.name = nil
}
/// Initializes this filter with a key value.
/// - Parameter key: A key to return.
/// Initializes a filter that matches the game character with a given key.
/// - Parameter key: A hexadecimal key in `0x` format, such as `0x0001`.
public init(key: String) {
self.key = key
self.name = nil
}
/// Initializes this filter with a name value.
/// - Parameter name: A name to return.
/// Initializes a filter that matches game characters by name.
/// - Parameter name: A name, or part of one.
public init(name: String) {
self.key = nil
self.name = name
@@ -12,36 +12,36 @@
//
// ===----------------------------------------------------------------------===
/// A type that contains values to fine-tune a response when requesting game series.
/// A filter for game series requests.
public struct GameSeriesFilter: KeyNameFilter, Sendable {
// TODO: Remove the documentation from the properties and initializers of this type as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
// MARK: Properties
/// A key to return, if any.
/// A hexadecimal key in `0x` format, such as `0x001`, to match exactly, if any.
public let key: String?
/// A name to return, if any.
/// A name, or part of one, to match, if any.
public let name: String?
// MARK: Initializers
/// Initializes this filter without key or name values.
/// Initializes a filter that matches every game series.
public init() {
self.key = nil
self.name = nil
}
/// Initializes this filter with a key value.
/// - Parameter key: A key to return.
/// Initializes a filter that matches the game series with a given key.
/// - Parameter key: A hexadecimal key in `0x` format, such as `0x001`.
public init(key: String) {
self.key = key
self.name = nil
}
/// Initializes this filter with a name value.
/// - Parameter name: A name to return.
/// Initializes a filter that matches game series by name.
/// - Parameter name: A name, or part of one.
public init(name: String) {
self.key = nil
self.name = name
@@ -15,7 +15,7 @@
import Foundation
/// A model that represents an amiibo.
public struct Amiibo: Sendable, Hashable {
public struct Amiibo: Sendable, Hashable, Codable, Identifiable {
// MARK: Properties
@@ -34,7 +34,9 @@ public struct Amiibo: Sendable, Hashable {
/// The name of this amiibo.
public let name: String
/// The game platform data for this amiibo, if available.
/// The related games of this amiibo, grouped by platform.
///
/// `nil` unless the request sets ``AmiiboFilter/showGames`` or ``AmiiboFilter/showUsage``, or when there are no related games.
public let platform: Platform?
/// The release dates of this amiibo across different regions.
@@ -51,6 +53,31 @@ public struct Amiibo: Sendable, Hashable {
// MARK: Initializers
/// Initializes this model.
package init(
head: String,
tail: String,
name: String,
type: String,
series: String,
gameCharacter: String,
gameSeries: String,
image: String,
release: Release = .init(),
platform: Platform? = nil
) {
self.gameCharacter = gameCharacter
self.gameSeries = gameSeries
self.head = head
self.image = image
self.name = name
self.platform = platform
self.release = release
self.series = series
self.tail = tail
self.type = type
}
/// Initializes this model from a given payload.
/// - Parameter payload: A payload that contains the values for the model.
init(_ payload: Components.Schemas.Amiibo) {
@@ -73,6 +100,11 @@ public struct Amiibo: Sendable, Hashable {
// MARK: Computed
/// The ``identifier`` of this amiibo.
public var id: String {
identifier
}
/// The full 16-character hexadecimal identifier, composed of the ``head`` and ``tail``.
public var identifier: String {
head + tail
@@ -14,7 +14,7 @@
extension Amiibo {
/// A model that represents a game related to an amiibo.
public struct Game: Sendable, Hashable {
public struct Game: Sendable, Hashable, Codable {
// MARK: Properties
@@ -24,11 +24,22 @@ extension Amiibo {
/// The name of this game.
public let name: String
/// A list of amiibo usages within this game, if available.
/// A list of amiibo usages within this game, or `nil` unless the request sets ``AmiiboFilter/showUsage``.
public let usages: [Usage]?
// MARK: Initializers
/// Initializes this model.
package init(
identifiers: [String],
name: String,
usages: [Usage]? = nil
) {
self.identifiers = identifiers
self.name = name
self.usages = usages
}
/// Initializes this model from a given payload.
/// - Parameter payload: A payload that contains the values for the model.
init(_ payload: Components.Schemas.AmiiboGame) {
@@ -13,8 +13,8 @@
// ===----------------------------------------------------------------------===
extension Amiibo {
/// A model that represents a collection of `Switch`, `Switch 2`, `3DS`, and `Wii U` games related to an amiibo.
public struct Platform: Sendable, Hashable {
/// A model that groups the games related to an amiibo by platform.
public struct Platform: Sendable, Hashable, Codable {
// MARK: Properties
@@ -33,6 +33,19 @@ extension Amiibo {
// MARK: Initializers
/// Initializes this model.
package init(
`switch`: [Game] = [],
switch2: [Game] = [],
threeDS: [Game] = [],
wiiU: [Game] = []
) {
self.switch = `switch`
self.switch2 = switch2
self.threeDS = threeDS
self.wiiU = wiiU
}
/// Initializes this model from the given payloads.
///
/// > important: In case no data is provided, then an instance of this model is not created.
///
@@ -18,7 +18,7 @@ extension Amiibo {
/// A model that represents the regional release dates of an amiibo.
///
/// The service provides these dates as date-only values, which are decoded as midnight UTC.
public struct Release: Sendable, Hashable {
public struct Release: Sendable, Hashable, Codable {
// MARK: Properties
@@ -36,6 +36,19 @@ extension Amiibo {
// MARK: Initializers
/// Initializes this model.
package init(
america: Date? = nil,
australia: Date? = nil,
europe: Date? = nil,
japan: Date? = nil
) {
self.america = america
self.australia = australia
self.europe = europe
self.japan = japan
}
/// Initializes this model from a given payload.
/// - Parameter payload: A payload that contains the values for the model.
init(_ payload: Components.Schemas.AmiiboRelease) {
@@ -14,18 +14,24 @@
extension Amiibo {
/// A model that represents the usage of an amiibo within a certain game.
public struct Usage: Sendable, Hashable {
public struct Usage: Sendable, Hashable, Codable {
// MARK: Properties
/// A description of how the amiibo is used within the game.
public let explanation: String
/// A flag that indicates whether the amiibo can save game data.
/// Whether the amiibo can save game data.
public let isWriteable: Bool
// MARK: Initializers
/// Initializes this model.
package init(explanation: String, isWriteable: Bool) {
self.explanation = explanation
self.isWriteable = isWriteable
}
/// Initializes this model from a given payload.
/// - Parameter payload: A payload that contains the values for the model.
init(_ payload: Components.Schemas.AmiiboUsage) {
@@ -25,6 +25,12 @@ public struct AmiiboSeries: KeyNameModel {
// MARK: Initializers
/// Initializes this model.
package init(key: String, name: String) {
self.key = key
self.name = name
}
/// Initializes this model from a given payload.
/// - Parameter payload: A payload that contains the values for the model.
init(_ payload: some KeyNamePayload) {
@@ -32,4 +38,11 @@ public struct AmiiboSeries: KeyNameModel {
self.name = payload.name
}
// MARK: Computed
/// The ``key`` of this amiibo series.
public var id: String {
key
}
}
@@ -25,6 +25,12 @@ public struct AmiiboType: KeyNameModel {
// MARK: Initializers
/// Initializes this model.
package init(key: String, name: String) {
self.key = key
self.name = name
}
/// Initializes this model from a given payload.
/// - Parameter payload: A payload that contains the values for the model.
init(_ payload: some KeyNamePayload) {
@@ -32,4 +38,11 @@ public struct AmiiboType: KeyNameModel {
self.name = payload.name
}
// MARK: Computed
/// The ``key`` of this amiibo type.
public var id: String {
key
}
}
@@ -25,6 +25,12 @@ public struct GameCharacter: KeyNameModel {
// MARK: Initializers
/// Initializes this model.
package init(key: String, name: String) {
self.key = key
self.name = name
}
/// Initializes this model from a given payload.
/// - Parameter payload: A payload that contains the values for the model.
init(_ payload: some KeyNamePayload) {
@@ -32,4 +38,11 @@ public struct GameCharacter: KeyNameModel {
self.name = payload.name
}
// MARK: Computed
/// The ``key`` of this game character.
public var id: String {
key
}
}
@@ -25,6 +25,12 @@ public struct GameSeries: KeyNameModel {
// MARK: Initializers
/// Initializes this model.
package init(key: String, name: String) {
self.key = key
self.name = name
}
/// Initializes this model from a given payload.
/// - Parameter payload: A payload that contains the values for the model.
init(_ payload: some KeyNamePayload) {
@@ -32,4 +38,11 @@ public struct GameSeries: KeyNameModel {
self.name = payload.name
}
// MARK: Computed
/// The ``key`` of this game series.
public var id: String {
key
}
}
@@ -14,46 +14,46 @@
import Foundation
/// A protocol that defines API clients containing all available endpoints to interact with.
/// A protocol that defines a client that fetches data from the Amiibo API.
///
/// Conforming types must be `Sendable`, as clients are expected to be used safely across concurrency domains.
/// ``AmiiboLiveClient`` is the default implementation; conform to provide another, such as a mock. Conforming types must be `Sendable`.
public protocol AmiiboClient: Sendable {
// MARK: Functions
/// Gets a list of amiibo items based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo items.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
func getAmiibos(by filter: AmiiboFilter) async throws(AmiiboServiceError) -> [Amiibo]
/// Gets a list of amiibo series based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo series.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
func getAmiiboSeries(by filter: AmiiboSeriesFilter) async throws(AmiiboServiceError) -> [AmiiboSeries]
/// Gets a list of amiibo types based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo types.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
func getAmiiboTypes(by filter: AmiiboTypeFilter) async throws(AmiiboServiceError) -> [AmiiboType]
/// Gets a list of game characters based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered game characters.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
func getGameCharacters(by filter: GameCharacterFilter) async throws(AmiiboServiceError) -> [GameCharacter]
/// Gets a list of game series based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered game series.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
func getGameSeries(by filter: GameSeriesFilter) async throws(AmiiboServiceError) -> [GameSeries]
/// Gets the date when the data was last updated.
/// - Returns: A last updated date, decoded as UTC.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
func getLastUpdated() async throws(AmiiboServiceError) -> Date
}
@@ -14,9 +14,9 @@
import Foundation
/// A type that implements the service that uses a client to make calls.
/// The entry point for fetching data from the Amiibo API.
///
/// This service forwards every call to the ``AmiiboClient`` client injected during initialization, which defaults to an ``AmiiboLiveClient`` instance. This type is `Sendable`, so an instance can be safely shared across concurrency domains.
/// It forwards every call to the ``AmiiboClient`` given at initialization, which defaults to ``AmiiboLiveClient``. Instances are `Sendable`.
public struct AmiiboService: Sendable {
// MARK: Properties
@@ -26,8 +26,8 @@ public struct AmiiboService: Sendable {
// MARK: Initializers
/// Initializes this service with a specific client type.
/// - Parameter client: A client to use to interact with the endpoints.
/// Initializes this service with a client.
/// - Parameter client: The client that performs the calls. Defaults to ``AmiiboLiveClient``.
public init(client: some AmiiboClient = AmiiboLiveClient()) {
self.client = client
}
@@ -35,9 +35,9 @@ public struct AmiiboService: Sendable {
// MARK: Functions
/// Gets a list of amiibo items based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo items.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getAmiibos(
_ filter: AmiiboFilter = .init()
) async throws(AmiiboServiceError) -> [Amiibo] {
@@ -45,9 +45,9 @@ public struct AmiiboService: Sendable {
}
/// Gets a list of amiibo series based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo series.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getAmiiboSeries(
_ filter: AmiiboSeriesFilter = .init()
) async throws(AmiiboServiceError) -> [AmiiboSeries] {
@@ -55,9 +55,9 @@ public struct AmiiboService: Sendable {
}
/// Gets a list of amiibo types based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered amiibo types.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getAmiiboTypes(
_ filter: AmiiboTypeFilter = .init()
) async throws(AmiiboServiceError) -> [AmiiboType] {
@@ -65,9 +65,9 @@ public struct AmiiboService: Sendable {
}
/// Gets a list of game characters based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered game characters.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getGameCharacters(
_ filter: GameCharacterFilter = .init()
) async throws(AmiiboServiceError) -> [GameCharacter] {
@@ -75,9 +75,9 @@ public struct AmiiboService: Sendable {
}
/// Gets a list of game series based on a given filter.
/// - Parameter filter: A filter to remove unwanted items from the result.
/// - Parameter filter: A filter for the result.
/// - Returns: A list of filtered game series.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getGameSeries(
_ filter: GameSeriesFilter = .init()
) async throws(AmiiboServiceError) -> [GameSeries] {
@@ -86,7 +86,7 @@ public struct AmiiboService: Sendable {
/// Gets the date when the data was last updated.
/// - Returns: A last updated date, decoded as UTC.
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
/// - Throws: An ``AmiiboServiceError`` if the call fails.
public func getLastUpdated() async throws(AmiiboServiceError) -> Date {
try await client.getLastUpdated()
}
@@ -0,0 +1,78 @@
// ===----------------------------------------------------------------------===
//
// This source file is part of the Amiibo Service open source project
//
// Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
// Licensed under Apache license v2.0
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Amiibo Service project authors
//
// SPDX-License-Identifier: Apache-2.0
//
// ===----------------------------------------------------------------------===
@testable import AmiiboService
import Foundation
import Testing
@Suite("ISO Date Time Transcoder")
struct ISODateTimeTranscoderTests {
// MARK: Properties
private let transcoder = ISODateTimeTranscoder()
// MARK: Decode tests
@Test
func `decodes a timestamp as UTC`() throws {
// GIVEN
let string = "2026-07-24T12:34:56.123000"
// WHEN
let date = try transcoder.decode(string)
// THEN
#expect(abs(date.timeIntervalSince(.utc(2026, 7, 24, 12, 34, 56)) - 0.123) < 0.001)
}
@Test
func `decodes a date-only string as midnight UTC`() throws {
// GIVEN
let string = "2014-11-21"
// WHEN
let date = try transcoder.decode(string)
// THEN
#expect(date == .utc(2014, 11, 21))
}
@Test(arguments: [
"", "2014-11", "2014-11-21T12:34:56", "2014-11-21T12:34:56Z", "21/11/2014", "yesterday"
])
func `throws a decoding error for an unsupported string`(string: String) {
// GIVEN
// WHEN
// THEN
#expect(throws: DecodingError.self) {
try transcoder.decode(string)
}
}
// MARK: Encode tests
@Test
func `encodes a date as a timestamp`() throws {
// GIVEN
let date: Date = .utc(2026, 7, 24, 12, 34, 56)
// WHEN
let string = try transcoder.encode(date)
// THEN
#expect(string == "2026-07-24T12:34:56.000000")
}
}
@@ -14,6 +14,7 @@
@testable import AmiiboService
import Foundation
import HTTPTypes
import Testing
@Suite("Amiibo Live Client")
@@ -21,8 +22,8 @@ struct AmiiboLiveClientTests {
// MARK: Server URL tests
@Test("resolves the server URL defined in the OpenAPI specification")
func serverURLResolves() throws {
@Test
func `resolves the server URL defined in the OpenAPI specification`() throws {
// GIVEN
// WHEN
let url = try Servers.Server1.url()
@@ -31,8 +32,8 @@ struct AmiiboLiveClientTests {
#expect(url.absoluteString == "https://www.amiiboapi.org/api")
}
@Test("uses the server URL from the OpenAPI specification")
func serverURLMatchesSpecification() throws {
@Test
func `uses the server URL from the OpenAPI specification`() throws {
// GIVEN
let expected = try Servers.Server1.url()
@@ -43,4 +44,437 @@ struct AmiiboLiveClientTests {
#expect(url == expected)
}
// MARK: Error mapping tests
@Test(arguments: zip(
TransportErrors.thrown,
TransportErrors.expected
))
func `maps an error thrown by the transport to the matching service error`(
thrown: any Error,
expected: AmiiboServiceError
) async {
// GIVEN
let client = AmiiboLiveClient(transport: ThrowingTransport(error: thrown))
// WHEN
// THEN
await #expect(throws: expected) {
try await client.getAmiibos(by: .init())
}
}
@Test(arguments: zip(
Responses.failing,
Responses.expected
))
func `maps a response status to the matching service error`(
response: (status: Int, json: String?),
expected: AmiiboServiceError
) async {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(
status: .init(code: response.status),
json: response.json
))
// WHEN
// THEN
await #expect(throws: expected) {
try await client.getAmiibos(by: .init())
}
}
// MARK: Get Amiibos tests
@Test
func `returns amiibos sorted by identifier`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .ok, json: JSON.amiibos))
// WHEN
let amiibos = try await client.getAmiibos(by: .init())
// THEN
#expect(amiibos.map(\.identifier) == ["0000000000000002", "0100000000040002"])
#expect(amiibos.map(\.name) == ["Mario", "Zelda"])
}
@Test
func `returns a single amiibo when the response holds an object`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .ok, json: JSON.amiibo))
// WHEN
let amiibos = try await client.getAmiibos(by: .init(identifier: "0100000000040002"))
let amiibo = try #require(amiibos.first)
// THEN
#expect(amiibos.count == 1)
#expect(amiibo.head == "01000000")
#expect(amiibo.tail == "00040002")
#expect(amiibo.name == "Zelda")
#expect(amiibo.type == "Figure")
#expect(amiibo.series == "Super Smash Bros.")
#expect(amiibo.gameCharacter == "Zelda")
#expect(amiibo.gameSeries == "The Legend of Zelda")
#expect(amiibo.imageURL?.host() == "example.com")
#expect(amiibo.platform == nil)
}
@Test
func `returns no amiibos when the response holds null`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .ok, json: JSON.amiibosNull))
// WHEN
let amiibos = try await client.getAmiibos(by: .init(identifier: "0000000000000000"))
// THEN
#expect(amiibos.isEmpty)
}
@Test
func `returns no amiibos when the response holds an empty list`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .ok, json: JSON.amiibosEmpty))
// WHEN
let amiibos = try await client.getAmiibos(by: .init(name: "Something"))
// THEN
#expect(amiibos.isEmpty)
}
@Test
func `decodes release dates as midnight UTC, and missing or null ones as nil`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .ok, json: JSON.amiibos))
// WHEN
let amiibos = try await client.getAmiibos(by: .init())
let mario = try #require(amiibos.first)
let zelda = try #require(amiibos.last)
// THEN
#expect(mario.release.america == .utc(2014, 11, 21))
#expect(mario.release.australia == .utc(2014, 11, 29))
#expect(mario.release.europe == .utc(2014, 11, 28))
#expect(mario.release.japan == .utc(2014, 12, 6))
#expect(zelda.release.australia == nil)
#expect(zelda.release.japan == nil)
}
@Test
func `maps related games and usages into the platform`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .ok, json: JSON.amiiboWithGames))
// WHEN
let amiibos = try await client.getAmiibos(by: .init(showUsage: true))
let platform = try #require(amiibos.first?.platform)
let game = try #require(platform.switch.first)
// THEN
#expect(platform.switch.count == 1)
#expect(platform.switch2.isEmpty)
#expect(platform.threeDS.isEmpty)
#expect(platform.wiiU.count == 1)
#expect(game.identifiers == ["01007EF00011E000"])
#expect(game.name == "The Legend of Zelda: Breath of the Wild")
#expect(game.usages == [.init(explanation: "Spawns a random selection of items.", isWriteable: false)])
#expect(platform.wiiU.first?.usages == nil)
}
@Test
func `encodes the amiibo filter as query parameters`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport { request in
let path = request.path ?? ""
#expect(path.hasPrefix("/amiibo?"))
#expect(path.contains("id=0100000000040002"))
#expect(path.contains("head=01000000"))
#expect(path.contains("tail=00040002"))
#expect(path.contains("name=zelda"))
#expect(path.contains("type=0x00"))
#expect(path.contains("amiiboSeries=0x00"))
#expect(path.contains("character=0x0100"))
#expect(path.contains("gameseries=0x010"))
#expect(path.contains("showgames=true"))
#expect(path.contains("showusage=false"))
return StubTransport.response(status: .ok, json: JSON.amiibosEmpty)
})
// WHEN
// THEN
_ = try await client.getAmiibos(by: .init(
head: "01000000",
tail: "00040002",
identifier: "0100000000040002",
name: "zelda",
type: "0x00",
series: "0x00",
gameCharacter: "0x0100",
gameSeries: "0x010",
showGames: true,
showUsage: false
))
}
@Test
func `omits nil filter values from the query`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport { request in
#expect(request.path == "/amiibo")
return StubTransport.response(status: .ok, json: JSON.amiibosEmpty)
})
// WHEN
// THEN
_ = try await client.getAmiibos(by: .init())
}
// MARK: Key-name endpoints tests
@Test
func `returns amiibo series sorted by key`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .ok, json: JSON.keyNameList))
// WHEN
let series = try await client.getAmiiboSeries(by: .init())
// THEN
#expect(series == [.init(key: "0x00", name: "Second"), .init(key: "0x01", name: "First")])
}
@Test
func `returns a single amiibo series when the response holds an object`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport { request in
#expect(request.path == "/amiiboseries?key=0x01")
return StubTransport.response(status: .ok, json: JSON.keyName)
})
// WHEN
let series = try await client.getAmiiboSeries(by: .init(key: "0x01"))
// THEN
#expect(series == [.init(key: "0x01", name: "First")])
}
@Test
func `returns amiibo types sorted by key`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport { request in
#expect(request.path == "/type")
return StubTransport.response(status: .ok, json: JSON.keyNameList)
})
// WHEN
let types = try await client.getAmiiboTypes(by: .init())
// THEN
#expect(types == [.init(key: "0x00", name: "Second"), .init(key: "0x01", name: "First")])
}
@Test
func `returns game characters sorted by key`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport { request in
#expect(request.path == "/character?name=First")
return StubTransport.response(status: .ok, json: JSON.keyNameList)
})
// WHEN
let characters = try await client.getGameCharacters(by: .init(name: "First"))
// THEN
#expect(characters == [.init(key: "0x00", name: "Second"), .init(key: "0x01", name: "First")])
}
@Test
func `returns game series sorted by key`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport { request in
#expect(request.path == "/gameseries")
return StubTransport.response(status: .ok, json: JSON.keyNameList)
})
// WHEN
let series = try await client.getGameSeries(by: .init())
// THEN
#expect(series == [.init(key: "0x00", name: "Second"), .init(key: "0x01", name: "First")])
}
@Test
func `throws notFound when a key-name endpoint matches nothing`() async {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .notFound, json: JSON.notFound))
// WHEN
// THEN
await #expect(throws: AmiiboServiceError.notFound) {
try await client.getGameSeries(by: .init(key: "0xffff"))
}
}
// MARK: Get Last Updated tests
@Test
func `returns the last updated timestamp as UTC`() async throws {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport { request in
#expect(request.path == "/lastupdated")
return StubTransport.response(status: .ok, json: JSON.lastUpdated)
})
// WHEN
let lastUpdated = try await client.getLastUpdated()
// THEN
#expect(lastUpdated == .utc(2026, 7, 24, 12, 34, 56))
}
@Test
func `throws notAvailable when the last updated endpoint fails`() async {
// GIVEN
let client = AmiiboLiveClient(transport: StubTransport(status: .internalServerError))
// WHEN
// THEN
await #expect(throws: AmiiboServiceError.notAvailable) {
try await client.getLastUpdated()
}
}
}
// MARK: - Arguments
private enum TransportErrors {
/// Errors thrown by the transport.
static let thrown: [any Error] = [
CancellationError(),
URLError(.cancelled),
URLError(.cannotParseResponse),
URLError(.notConnectedToInternet),
URLError(.timedOut),
URLError(.badURL)
]
/// The service error expected for each thrown error.
static let expected: [AmiiboServiceError] = [
.cancelled,
.cancelled,
.decoding,
.notAvailable,
.notAvailable,
.unknown(String(describing: URLError(.badURL)))
]
}
private enum Responses {
/// Failing responses, with a body where the specification documents one.
static let failing: [(status: Int, json: String?)] = [
(400, JSON.badRequest),
(404, JSON.notFound),
(500, nil),
(418, nil),
(200, "not json")
]
/// The service error expected for each failing response.
static let expected: [AmiiboServiceError] = [
.badRequest,
.notFound,
.notAvailable,
.undocumented(418),
.decoding
]
}
// MARK: - Payloads
private enum JSON {
/// Two amiibos in reverse identifier order; the first lacks `au` and has a null `jp`.
static let amiibos = """
{"amiibo": [
{
"amiiboSeries": "Super Smash Bros.", "character": "Zelda", "gameSeries": "The Legend of Zelda",
"head": "01000000", "tail": "00040002", "name": "Zelda", "type": "Figure",
"image": "https://example.com/zelda.png",
"release": {"eu": "2014-11-28", "jp": null, "na": "2014-11-21"}
},
{
"amiiboSeries": "Super Smash Bros.", "character": "Mario", "gameSeries": "Super Mario",
"head": "00000000", "tail": "00000002", "name": "Mario", "type": "Figure",
"image": "https://example.com/mario.png",
"release": {"au": "2014-11-29", "eu": "2014-11-28", "jp": "2014-12-06", "na": "2014-11-21"}
}
]}
"""
/// A single amiibo, as returned for an `id` filter.
static let amiibo = """
{"amiibo": {
"amiiboSeries": "Super Smash Bros.", "character": "Zelda", "gameSeries": "The Legend of Zelda",
"head": "01000000", "tail": "00040002", "name": "Zelda", "type": "Figure",
"image": "https://example.com/zelda.png",
"release": {"au": "2014-12-04", "eu": "2014-11-28", "jp": "2014-12-06", "na": "2014-11-21"}
}}
"""
/// An amiibo with Switch and Wii U games, an empty 3DS list, and no Switch 2 key.
static let amiiboWithGames = """
{"amiibo": [{
"amiiboSeries": "Super Smash Bros.", "character": "Zelda", "gameSeries": "The Legend of Zelda",
"head": "01000000", "tail": "00040002", "name": "Zelda", "type": "Figure",
"image": "https://example.com/zelda.png",
"release": {"na": "2014-11-21"},
"games3DS": [],
"gamesSwitch": [{
"gameID": ["01007EF00011E000"],
"gameName": "The Legend of Zelda: Breath of the Wild",
"amiiboUsage": [{"Usage": "Spawns a random selection of items.", "write": false}]
}],
"gamesWiiU": [{
"gameID": ["0005000010145000"],
"gameName": "Super Smash Bros. for Wii U"
}]
}]}
"""
/// The response for an `id` filter that matches nothing.
static let amiibosNull = """
{"amiibo": null}
"""
/// The response for any other filter that matches nothing.
static let amiibosEmpty = """
{"amiibo": []}
"""
/// Two key-name items in reverse key order.
static let keyNameList = """
{"amiibo": [{"key": "0x01", "name": "First"}, {"key": "0x00", "name": "Second"}]}
"""
/// A single key-name item, as returned for a `key` filter.
static let keyName = """
{"amiibo": {"key": "0x01", "name": "First"}}
"""
/// The last updated timestamp.
static let lastUpdated = """
{"lastUpdated": "2026-07-24T12:34:56.000000"}
"""
/// The body of a 400 response.
static let badRequest = """
{"code": 400, "error": "Bad request."}
"""
/// The body of a 404 response.
static let notFound = """
{"code": 404, "error": "Not found."}
"""
}
@@ -0,0 +1,61 @@
// ===----------------------------------------------------------------------===
//
// This source file is part of the Amiibo Service open source project
//
// Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
// Licensed under Apache license v2.0
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Amiibo Service project authors
//
// SPDX-License-Identifier: Apache-2.0
//
// ===----------------------------------------------------------------------===
import AmiiboService
import Testing
@Suite("Filter conformances")
struct FilterConformanceTests {
// MARK: Equatable tests
@Test
func `compares amiibo filters by value`() {
// GIVEN
// WHEN
// THEN
#expect(AmiiboFilter() == AmiiboFilter())
#expect(AmiiboFilter(name: "zelda") == AmiiboFilter(name: "zelda"))
#expect(AmiiboFilter(name: "zelda") != AmiiboFilter(name: "mario"))
#expect(AmiiboFilter() != AmiiboFilter(showGames: true))
}
@Test
func `compares key-name filters by value`() {
// GIVEN
// WHEN
// THEN
#expect(AmiiboSeriesFilter() == AmiiboSeriesFilter())
#expect(AmiiboSeriesFilter(key: "0x01") == AmiiboSeriesFilter(key: "0x01"))
#expect(AmiiboSeriesFilter(key: "0x01") != AmiiboSeriesFilter(name: "0x01"))
#expect(AmiiboTypeFilter(name: "Card") != AmiiboTypeFilter(name: "Figure"))
#expect(GameCharacterFilter(key: "0x0100") != GameCharacterFilter())
#expect(GameSeriesFilter(name: "Pikmin") == GameSeriesFilter(name: "Pikmin"))
}
// MARK: Hashable tests
@Test
func `hashes equal filters alike`() {
// GIVEN
let amiiboFilters: Set = [AmiiboFilter(name: "zelda"), AmiiboFilter(name: "zelda"), AmiiboFilter(name: "mario")]
let seriesFilters: Set = [AmiiboSeriesFilter(key: "0x01"), AmiiboSeriesFilter(key: "0x01"), AmiiboSeriesFilter()]
// WHEN
// THEN
#expect(amiiboFilters.count == 2)
#expect(seriesFilters.count == 2)
}
}
@@ -0,0 +1,84 @@
// ===----------------------------------------------------------------------===
//
// This source file is part of the Amiibo Service open source project
//
// Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
// Licensed under Apache license v2.0
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Amiibo Service project authors
//
// SPDX-License-Identifier: Apache-2.0
//
// ===----------------------------------------------------------------------===
import AmiiboService
import Foundation
import Testing
@Suite("Model conformances")
struct ModelConformanceTests {
// MARK: Identifiable tests
@Test
func `identifies an amiibo by its identifier`() {
// GIVEN
let amiibos = Fixtures.amiibos
// WHEN
// THEN
#expect(amiibos.map(\.id) == amiibos.map(\.identifier))
}
@Test
func `identifies key-name models by their keys`() {
// GIVEN
// WHEN
// THEN
#expect(Fixtures.amiiboSeries.map(\.id) == Fixtures.amiiboSeries.map(\.key))
#expect(Fixtures.amiiboTypes.map(\.id) == Fixtures.amiiboTypes.map(\.key))
#expect(Fixtures.gameCharacters.map(\.id) == Fixtures.gameCharacters.map(\.key))
#expect(Fixtures.gameSeries.map(\.id) == Fixtures.gameSeries.map(\.key))
}
// MARK: Codable tests
@Test
func `round-trips amiibos through JSON`() throws {
// GIVEN
let amiibos = Fixtures.amiibos
// WHEN
let decoded = try roundTrip(amiibos)
// THEN
#expect(decoded == amiibos)
#expect(decoded.first?.platform?.switch.first?.usages?.isEmpty == false)
}
@Test
func `round-trips key-name models through JSON`() throws {
// GIVEN
// WHEN
// THEN
#expect(try roundTrip(Fixtures.amiiboSeries) == Fixtures.amiiboSeries)
#expect(try roundTrip(Fixtures.amiiboTypes) == Fixtures.amiiboTypes)
#expect(try roundTrip(Fixtures.gameCharacters) == Fixtures.gameCharacters)
#expect(try roundTrip(Fixtures.gameSeries) == Fixtures.gameSeries)
}
}
// MARK: - Helpers
private extension ModelConformanceTests {
// MARK: Functions
/// Encodes a value to JSON and decodes it back.
func roundTrip<Value: Codable>(_ value: Value) throws -> Value {
try JSONDecoder().decode(Value.self, from: JSONEncoder().encode(value))
}
}
@@ -181,8 +181,8 @@ struct AmiiboServiceLiveTests {
@Test
func `get the last updated timestamp`() async throws {
try await assertLastUpdated(
onOrAfterDay: 24,
month: 7,
onOrAfterDay: 22,
month: 10,
year: 2026
)
}
@@ -221,8 +221,7 @@ private extension AmiiboServiceLiveTests {
if filter.showUsage == true {
#expect(firstAmiiboPlatform.switch.first?.usages?.isEmpty == false)
// Given the live data is still not returning any Switch 2 games.
#expect(firstAmiiboPlatform.switch2.isEmpty == true)
#expect(firstAmiiboPlatform.switch2.first?.usages?.isEmpty == false)
#expect(firstAmiiboPlatform.threeDS.first?.usages?.isEmpty == false)
#expect(firstAmiiboPlatform.wiiU.first?.usages?.isEmpty == false)
}
@@ -584,16 +583,16 @@ enum Output {
// MARK: - Constants
private extension Int {
/// A number that represents the minimum number of amiibo items expected from the live service, as of July 2026.
static let minimumAmiibos = 946
/// A number that represents the minimum number of amiibo series expected from the live service, as of July 2026.
static let minimumAmiiboSeries = 31
/// A number that represents the minimum number of amiibo types expected from the live service, as of July 2026.
/// A number that represents the minimum number of amiibo items expected from the live service, as of October 2026.
static let minimumAmiibos = 952
/// A number that represents the minimum number of amiibo series expected from the live service, as of October 2026.
static let minimumAmiiboSeries = 32
/// A number that represents the minimum number of amiibo types expected from the live service, as of October 2026.
static let minimumAmiiboTypes = 5
/// A number that represents the minimum number of game characters expected from the live service, as of July 2026.
static let minimumGameCharacters = 681
/// A number that represents the minimum number of game series expected from the live service, as of July 2026.
static let minimumGameSeries = 118
/// A number that represents the minimum number of game characters expected from the live service, as of October 2026.
static let minimumGameCharacters = 685
/// A number that represents the minimum number of game series expected from the live service, as of October 2026.
static let minimumGameSeries = 119
}
private extension String {
@@ -21,8 +21,8 @@ struct AmiiboServiceMockTests {
// MARK: Get Amiibos tests
@Test("returns empty amiibos when mock provides an empty list")
func getAmiibosEmpty() async throws {
@Test
func `returns empty amiibos when mock provides an empty list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(amiibos: []))
@@ -33,8 +33,22 @@ struct AmiiboServiceMockTests {
#expect(amiibos.isEmpty)
}
@Test("throws notFound when mock provides no amiibos")
func getAmiibosNotFound() async {
@Test
func `returns amiibos when mock provides a list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(amiibos: Fixtures.amiibos))
// WHEN
let amiibos = try await service.getAmiibos()
// THEN
#expect(amiibos == Fixtures.amiibos)
#expect(amiibos.first?.identifier == "0100000000040002")
#expect(amiibos.first?.imageURL != nil)
}
@Test
func `throws notFound when mock provides no amiibos`() async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient())
@@ -45,8 +59,8 @@ struct AmiiboServiceMockTests {
}
}
@Test("throws error for amiibos when mock is configured with error", arguments: Errors.all)
func getAmiibosThrows(error: AmiiboServiceError) async {
@Test(arguments: Errors.all)
func `throws error for amiibos when mock is configured with error`(error: AmiiboServiceError) async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(error: error))
@@ -59,8 +73,8 @@ struct AmiiboServiceMockTests {
// MARK: Get Amiibo Series tests
@Test("returns empty amiibo series when mock provides an empty list")
func getAmiiboSeriesEmpty() async throws {
@Test
func `returns empty amiibo series when mock provides an empty list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(amiiboSeries: []))
@@ -71,8 +85,20 @@ struct AmiiboServiceMockTests {
#expect(amiiboSeries.isEmpty)
}
@Test("throws notFound when mock provides no amiibo series")
func getAmiiboSeriesNotFound() async {
@Test
func `returns amiibo series when mock provides a list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(amiiboSeries: Fixtures.amiiboSeries))
// WHEN
let amiiboSeries = try await service.getAmiiboSeries()
// THEN
#expect(amiiboSeries == Fixtures.amiiboSeries)
}
@Test
func `throws notFound when mock provides no amiibo series`() async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient())
@@ -83,8 +109,8 @@ struct AmiiboServiceMockTests {
}
}
@Test("throws error for amiibo series when mock is configured with error", arguments: Errors.all)
func getAmiiboSeriesThrows(error: AmiiboServiceError) async {
@Test(arguments: Errors.all)
func `throws error for amiibo series when mock is configured with error`(error: AmiiboServiceError) async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(error: error))
@@ -97,8 +123,8 @@ struct AmiiboServiceMockTests {
// MARK: Get Amiibo Types tests
@Test("returns empty amiibo types when mock provides an empty list")
func getAmiiboTypesEmpty() async throws {
@Test
func `returns empty amiibo types when mock provides an empty list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(amiiboTypes: []))
@@ -109,8 +135,20 @@ struct AmiiboServiceMockTests {
#expect(amiiboTypes.isEmpty)
}
@Test("throws notFound when mock provides no amiibo types")
func getAmiiboTypesNotFound() async {
@Test
func `returns amiibo types when mock provides a list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(amiiboTypes: Fixtures.amiiboTypes))
// WHEN
let amiiboTypes = try await service.getAmiiboTypes()
// THEN
#expect(amiiboTypes == Fixtures.amiiboTypes)
}
@Test
func `throws notFound when mock provides no amiibo types`() async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient())
@@ -121,8 +159,8 @@ struct AmiiboServiceMockTests {
}
}
@Test("throws error for amiibo types when mock is configured with error", arguments: Errors.all)
func getAmiiboTypesThrows(error: AmiiboServiceError) async {
@Test(arguments: Errors.all)
func `throws error for amiibo types when mock is configured with error`(error: AmiiboServiceError) async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(error: error))
@@ -135,8 +173,8 @@ struct AmiiboServiceMockTests {
// MARK: Get Game Characters tests
@Test("returns empty game characters when mock provides an empty list")
func getGameCharactersEmpty() async throws {
@Test
func `returns empty game characters when mock provides an empty list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(gameCharacters: []))
@@ -147,8 +185,20 @@ struct AmiiboServiceMockTests {
#expect(gameCharacters.isEmpty)
}
@Test("throws notFound when mock provides no game characters")
func getGameCharactersNotFound() async {
@Test
func `returns game characters when mock provides a list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(gameCharacters: Fixtures.gameCharacters))
// WHEN
let gameCharacters = try await service.getGameCharacters()
// THEN
#expect(gameCharacters == Fixtures.gameCharacters)
}
@Test
func `throws notFound when mock provides no game characters`() async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient())
@@ -159,8 +209,8 @@ struct AmiiboServiceMockTests {
}
}
@Test("throws error for game characters when mock is configured with error", arguments: Errors.all)
func getGameCharactersThrows(error: AmiiboServiceError) async {
@Test(arguments: Errors.all)
func `throws error for game characters when mock is configured with error`(error: AmiiboServiceError) async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(error: error))
@@ -173,8 +223,8 @@ struct AmiiboServiceMockTests {
// MARK: Get Game Series tests
@Test("returns empty game series when mock provides an empty list")
func getGameSeriesEmpty() async throws {
@Test
func `returns empty game series when mock provides an empty list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(gameSeries: []))
@@ -185,8 +235,20 @@ struct AmiiboServiceMockTests {
#expect(gameSeries.isEmpty)
}
@Test("throws notFound when mock provides no game series")
func getGameSeriesNotFound() async {
@Test
func `returns game series when mock provides a list`() async throws {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(gameSeries: Fixtures.gameSeries))
// WHEN
let gameSeries = try await service.getGameSeries()
// THEN
#expect(gameSeries == Fixtures.gameSeries)
}
@Test
func `throws notFound when mock provides no game series`() async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient())
@@ -197,8 +259,8 @@ struct AmiiboServiceMockTests {
}
}
@Test("throws error for game series when mock is configured with error", arguments: Errors.all)
func getGameSeriesThrows(error: AmiiboServiceError) async {
@Test(arguments: Errors.all)
func `throws error for game series when mock is configured with error`(error: AmiiboServiceError) async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(error: error))
@@ -211,8 +273,8 @@ struct AmiiboServiceMockTests {
// MARK: Get Last Updated tests
@Test("returns date when mock provides a last updated date")
func getLastUpdated() async throws {
@Test
func `returns date when mock provides a last updated date`() async throws {
// GIVEN
let expectedDate = Date(timeIntervalSince1970: 1_700_000_000)
let service = AmiiboService(client: AmiiboMockClient(lastUpdated: expectedDate))
@@ -224,8 +286,8 @@ struct AmiiboServiceMockTests {
#expect(lastUpdated == expectedDate)
}
@Test("throws notFound when mock provides no last updated date")
func getLastUpdatedNotFound() async {
@Test
func `throws notFound when mock provides no last updated date`() async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient())
@@ -236,8 +298,8 @@ struct AmiiboServiceMockTests {
}
}
@Test("throws error for last updated when mock is configured with error", arguments: Errors.all)
func getLastUpdatedThrows(error: AmiiboServiceError) async {
@Test(arguments: Errors.all)
func `throws error for last updated when mock is configured with error`(error: AmiiboServiceError) async {
// GIVEN
let service = AmiiboService(client: AmiiboMockClient(error: error))
@@ -0,0 +1,44 @@
// ===----------------------------------------------------------------------===
//
// This source file is part of the Amiibo Service open source project
//
// Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
// Licensed under Apache license v2.0
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Amiibo Service project authors
//
// SPDX-License-Identifier: Apache-2.0
//
// ===----------------------------------------------------------------------===
import Foundation
extension Date {
// MARK: Functions
/// Makes a date from UTC components.
static func utc(
_ year: Int,
_ month: Int,
_ day: Int,
_ hour: Int = 0,
_ minute: Int = 0,
_ second: Int = 0
) -> Date {
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = .init(secondsFromGMT: 0)!
return calendar.date(from: .init(
year: year,
month: month,
day: day,
hour: hour,
minute: minute,
second: second
))!
}
}
@@ -0,0 +1,85 @@
// ===----------------------------------------------------------------------===
//
// This source file is part of the Amiibo Service open source project
//
// Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
// Licensed under Apache license v2.0
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Amiibo Service project authors
//
// SPDX-License-Identifier: Apache-2.0
//
// ===----------------------------------------------------------------------===
import AmiiboService
import Foundation
/// Ready-made models for testing purposes.
enum Fixtures {
/// Amiibo items; the first one has release dates and related games with usages.
static let amiibos: [Amiibo] = [
.init(
head: "01000000",
tail: "00040002",
name: "Zelda",
type: "Figure",
series: "Super Smash Bros.",
gameCharacter: "Zelda",
gameSeries: "The Legend of Zelda",
image: "https://raw.githubusercontent.com/N3evin/AmiiboAPI/master/images/icon_01000000-00040002.png",
release: .init(
america: Date(timeIntervalSince1970: 1_416_441_600),
australia: Date(timeIntervalSince1970: 1_417_564_800),
europe: Date(timeIntervalSince1970: 1_417_132_800),
japan: Date(timeIntervalSince1970: 1_417_564_800)
),
platform: .init(
switch: [
.init(
identifiers: ["01007EF00011E000"],
name: "The Legend of Zelda: Breath of the Wild",
usages: [.init(explanation: "Spawns a random selection of items.", isWriteable: false)]
)
],
wiiU: [
.init(
identifiers: ["0005000010145000"],
name: "Super Smash Bros. for Wii U",
usages: [.init(explanation: "Unlocks a figure player.", isWriteable: true)]
)
]
)
),
.init(
head: "00000000",
tail: "00000002",
name: "Mario",
type: "Figure",
series: "Super Smash Bros.",
gameCharacter: "Mario",
gameSeries: "Super Mario",
image: "https://raw.githubusercontent.com/N3evin/AmiiboAPI/master/images/icon_00000000-00000002.png"
)
]
/// Amiibo series.
static let amiiboSeries: [AmiiboSeries] = [
.init(key: "0x00", name: "Super Smash Bros."),
.init(key: "0x01", name: "Super Mario")
]
/// Amiibo types.
static let amiiboTypes: [AmiiboType] = [
.init(key: "0x00", name: "Figure"),
.init(key: "0x01", name: "Card")
]
/// Game characters.
static let gameCharacters: [GameCharacter] = [
.init(key: "0x0000", name: "Mario"),
.init(key: "0x0100", name: "Zelda")
]
/// Game series.
static let gameSeries: [GameSeries] = [
.init(key: "0x000", name: "Super Mario"),
.init(key: "0x010", name: "The Legend of Zelda")
]
}
@@ -0,0 +1,72 @@
// ===----------------------------------------------------------------------===
//
// This source file is part of the Amiibo Service open source project
//
// Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
// Licensed under Apache license v2.0
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Amiibo Service project authors
//
// SPDX-License-Identifier: Apache-2.0
//
// ===----------------------------------------------------------------------===
import Foundation
import HTTPTypes
import OpenAPIRuntime
/// A transport that answers every request with a canned response, for testing purposes.
struct StubTransport: ClientTransport {
// MARK: Type aliases
/// A closure that builds the response for a request.
typealias Handler = @Sendable (HTTPRequest) throws -> (HTTPResponse, HTTPBody?)
// MARK: Properties
/// The handler that builds the response.
private let handler: Handler
// MARK: Initializers
/// Initializes this transport with a response handler.
init(handler: @escaping Handler) {
self.handler = handler
}
/// Initializes this transport with a fixed response.
init(status: HTTPResponse.Status, json: String? = nil) {
self.init { _ in
Self.response(status: status, json: json)
}
}
// MARK: Functions
func send(
_ request: HTTPRequest,
body: HTTPBody?,
baseURL: URL,
operationID: String
) async throws -> (HTTPResponse, HTTPBody?) {
try handler(request)
}
/// Builds a response with a status and an optional JSON body.
static func response(
status: HTTPResponse.Status,
json: String? = nil
) -> (HTTPResponse, HTTPBody?) {
guard let json else {
return (.init(status: status), nil)
}
return (
.init(status: status, headerFields: [.contentType: "application/json"]),
.init(json)
)
}
}
@@ -0,0 +1,48 @@
// ===----------------------------------------------------------------------===
//
// This source file is part of the Amiibo Service open source project
//
// Copyright (c) 2026 Röck+Cöde VoF. and the Amiibo Service project authors
// Licensed under Apache license v2.0
//
// See LICENSE for license information
// See CONTRIBUTORS for the list of Amiibo Service project authors
//
// SPDX-License-Identifier: Apache-2.0
//
// ===----------------------------------------------------------------------===
import Foundation
import HTTPTypes
import OpenAPIRuntime
/// A transport that throws a given error instead of sending the request, for testing purposes.
///
/// The error reaches the live client wrapped in a `ClientError`, as it would from a real transport.
struct ThrowingTransport: ClientTransport {
// MARK: Properties
/// The error to throw.
private let error: any Error
// MARK: Initializers
/// Initializes this transport.
/// - Parameter error: An error to throw.
init(error: any Error) {
self.error = error
}
// MARK: Functions
func send(
_ request: HTTPRequest,
body: HTTPBody?,
baseURL: URL,
operationID: String
) async throws -> (HTTPResponse, HTTPBody?) {
throw error
}
}
-9
View File
@@ -1,9 +0,0 @@
/*!
* This source file is part of the Swift.org open source project
*
* Copyright (c) 2021 Apple Inc. and the Swift project authors
* Licensed under Apache License v2.0 with Runtime Library Exception
*
* See https://swift.org/LICENSE.txt for license information
* See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/.badge[data-v-ffe39a30]{--badge-color:var(--color-badge-default);--badge-dark-color:var(--color-badge-dark-default);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:inline-block;padding:2px 4px;white-space:nowrap;border-radius:var(--badge-border-radius,1px);border-style:var(--badge-border-style,none);border-width:var(--badge-border-width,1px);margin:auto;margin-inline-start:5px;color:var(--colors-badge-text,var(--color-badge-text));background-color:var(--badge-color)}@media screen{[data-color-scheme=dark] .badge[data-v-ffe39a30]{background-color:var(--badge-dark-color)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .badge[data-v-ffe39a30]{background-color:var(--badge-dark-color)}}.badge-deprecated[data-v-ffe39a30]{--badge-color:var(--color-badge-deprecated);--badge-dark-color:var(--color-badge-dark-deprecated)}.badge-beta[data-v-ffe39a30]{--badge-color:var(--color-badge-beta);--badge-dark-color:var(--color-badge-dark-beta)}[data-v-3a32ffd0] .code-listing{background:var(--background,var(--color-code-background));color:var(--text,var(--color-code-plain));border-color:var(--colors-grid,var(--color-grid));border-width:var(--code-border-width,1px);border-style:var(--code-border-style,solid)}[data-v-3a32ffd0] .code-listing pre{padding:var(--code-block-style-elements-padding)}[data-v-3a32ffd0] .code-listing pre>code{font-size:.8823529412rem;line-height:1.6666666667;font-weight:400;font-family:var(--typography-html-font-mono,Menlo,monospace)}[data-v-3a32ffd0] *+.code-listing,[data-v-3a32ffd0] *+.endpoint-example,[data-v-3a32ffd0] *+.inline-image-container,[data-v-3a32ffd0] *+aside,[data-v-3a32ffd0] *+figure,[data-v-3a32ffd0] .code-listing+*,[data-v-3a32ffd0] .endpoint-example+*,[data-v-3a32ffd0] .inline-image-container+*,[data-v-3a32ffd0] aside+*,[data-v-3a32ffd0] figure+*{margin-top:var(--spacing-stacked-margin-xlarge)}[data-v-3a32ffd0] *+dl,[data-v-3a32ffd0] dl+*{margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] img{display:block;margin:auto;max-width:100%}[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ol li:not(:first-child),[data-v-3a32ffd0] ul,[data-v-3a32ffd0] ul li:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}@media only screen and (max-width:735px){[data-v-3a32ffd0] ol,[data-v-3a32ffd0] ul{margin-left:1.25rem}}[data-v-3a32ffd0] dt:not(:first-child){margin-top:var(--spacing-stacked-margin-large)}[data-v-3a32ffd0] dd{margin-left:2em}.topic-icon-wrapper[data-v-58794252]{display:flex;align-items:center;justify-content:center;height:1.4705882353rem;flex:0 0 1.294rem;width:1.294rem;margin-inline-end:1rem}.topic-icon[data-v-58794252]{height:.8823529412rem;transform:scale(1);-webkit-transform:scale(1);overflow:visible}.topic-icon[data-v-58794252] img{margin:0;display:block;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.topic-icon.curly-brackets-icon[data-v-58794252]{height:1rem}.token-method[data-v-295ad0ff]{font-weight:700}.token-keyword[data-v-295ad0ff]{color:var(--syntax-keyword,var(--color-syntax-keywords))}.token-number[data-v-295ad0ff]{color:var(--syntax-number,var(--color-syntax-numbers))}.token-string[data-v-295ad0ff]{color:var(--syntax-string,var(--color-syntax-strings))}.attribute-link[data-v-295ad0ff],.token-attribute[data-v-295ad0ff]{color:var(--syntax-attribute,var(--color-syntax-keywords))}.token-internalParam[data-v-295ad0ff]{color:var(--color-syntax-param-internal-name)}.type-identifier-link[data-v-295ad0ff]{color:var(--syntax-type,var(--color-syntax-other-type-names))}.token-removed[data-v-295ad0ff]{background-color:var(--color-highlight-red)}.token-added[data-v-295ad0ff]{background-color:var(--color-highlight-green)}.decorated-title[data-v-2d744be4]{direction:ltr}.decorator[data-v-2d744be4],.label[data-v-2d744be4]{color:var(--colors-secondary-label,var(--color-secondary-label))}.label[data-v-2d744be4]{font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.empty-token[data-v-2d744be4]{font-size:0}.empty-token[data-v-2d744be4]:after{content:" ";font-size:1rem}.abstract[data-v-e1f11a1a],.link-block[data-v-e1f11a1a] .badge{margin-inline-start:2.294rem}.link-block .badge+.badge[data-v-e1f11a1a]{margin-inline-start:1rem}.link[data-v-e1f11a1a]{display:flex}.link-block .badge[data-v-e1f11a1a]{margin-top:.5rem}.link-block.has-inline-element[data-v-e1f11a1a]{display:flex;align-items:flex-start;flex-flow:row wrap}.link-block.has-inline-element .badge[data-v-e1f11a1a]{margin-inline-start:1rem;margin-top:0}.link-block .has-adjacent-elements[data-v-e1f11a1a]{padding-top:5px;padding-bottom:5px;display:inline-flex}.link-block[data-v-e1f11a1a],.link[data-v-e1f11a1a]{box-sizing:inherit}.link-block.changed[data-v-e1f11a1a],.link.changed[data-v-e1f11a1a]{padding-right:1rem;padding-left:2.1764705882rem;padding-top:8px;padding-bottom:8px;display:Line truncated
-9
View File
@@ -1,9 +0,0 @@
/*!
* This source file is part of the Swift.org open source project
*
* Copyright (c) 2021 Apple Inc. and the Swift project authors
* Licensed under Apache License v2.0 with Runtime Library Exception
*
* See https://swift.org/LICENSE.txt for license information
* See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/aside[data-v-50d24223]{-moz-column-break-inside:avoid;break-inside:avoid;border-radius:var(--aside-border-radius,var(--border-radius,4px));border-style:var(--aside-border-style,solid);border-block-width:var(--aside-border-width-block,0);border-inline-width:var(--aside-border-width-inline,6px 0);padding:.9411764706rem;text-align:start}aside .label[data-v-50d24223]{font-size:1rem;line-height:1.5294117647;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}aside .label+[data-v-50d24223]{margin-top:var(--spacing-stacked-margin-small)}aside.deprecated[data-v-50d24223]{background-color:var(--color-aside-deprecated-background);border-color:var(--color-aside-deprecated-border);box-shadow:0 0 0 0 var(--color-aside-deprecated-border) inset,0 0 0 0 var(--color-aside-deprecated-border)}aside.deprecated .label[data-v-50d24223]{color:var(--color-aside-deprecated)}aside.experiment[data-v-50d24223]{background-color:var(--color-aside-experiment-background);border-color:var(--color-aside-experiment-border);box-shadow:0 0 0 0 var(--color-aside-experiment-border) inset,0 0 0 0 var(--color-aside-experiment-border)}aside.experiment .label[data-v-50d24223]{color:var(--color-aside-experiment)}aside.important[data-v-50d24223]{background-color:var(--color-aside-important-background);border-color:var(--color-aside-important-border);box-shadow:0 0 0 0 var(--color-aside-important-border) inset,0 0 0 0 var(--color-aside-important-border)}aside.important .label[data-v-50d24223]{color:var(--color-aside-important)}aside.note[data-v-50d24223]{background-color:var(--color-aside-note-background);border-color:var(--color-aside-note-border);box-shadow:0 0 0 0 var(--color-aside-note-border) inset,0 0 0 0 var(--color-aside-note-border)}aside.note .label[data-v-50d24223]{color:var(--color-aside-note)}aside.tip[data-v-50d24223]{background-color:var(--color-aside-tip-background);border-color:var(--color-aside-tip-border);box-shadow:0 0 0 0 var(--color-aside-tip-border) inset,0 0 0 0 var(--color-aside-tip-border)}aside.tip .label[data-v-50d24223]{color:var(--color-aside-tip)}aside.warning[data-v-50d24223]{background-color:var(--color-aside-warning-background);border-color:var(--color-aside-warning-border);box-shadow:0 0 0 0 var(--color-aside-warning-border) inset,0 0 0 0 var(--color-aside-warning-border)}aside.warning .label[data-v-50d24223]{color:var(--color-aside-warning)}code[data-v-c21375ec]{direction:ltr}code[data-v-c21375ec]:before{content:attr(data-before-code)}code[data-v-c21375ec]:after{content:attr(data-after-code)}code[data-v-c21375ec]:after,code[data-v-c21375ec]:before{display:block;position:absolute;clip:rect(1px,1px,1px,1px);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0}.CopyIcon[data-v-5308ccb8]{opacity:.8}.CheckmarkIcon[data-v-4c718f32],.CrossIcon[data-v-27a90ea3]{opacity:1;stroke:currentColor}.swift-file-icon.file-icon[data-v-c01a6890]{height:1rem}.file-icon[data-v-7c381064]{position:relative;align-items:flex-end;height:24px;margin:0 .5rem 0 1rem}.filename[data-v-c8c40662]{color:var(--text,var(--colors-secondary-label,var(--color-secondary-label)));font-size:.9411764706rem;line-height:1.1875;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:1rem}@media only screen and (max-width:735px){.filename[data-v-c8c40662]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:0}}.filename>a[data-v-c8c40662],.filename>span[data-v-c8c40662]{display:flex;align-items:center;line-height:normal}a[data-v-c8c40662]{color:var(--url,var(--color-link))}.code-line-container[data-v-28c1cdd6]{display:inline-block;width:100%;box-sizing:border-box}.code-number[data-v-28c1cdd6]{display:inline-block;padding:0 1rem 0 8px;text-align:right;min-width:2em;color:#666;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-number[data-v-28c1cdd6]:before{content:attr(data-line-number)}.code-listing:not(:has(.code-number)):has(.highlighted) .code-line-container[data-v-28c1cdd6]{padding-left:8px;border-left:4px solid transparent}.code-listing:not(:has(.code-number)):has(.highlighted) .highlighted[data-v-28c1cdd6]{border-left-color:var(--color-code-line-highlight-border)}.highlighted[data-v-28c1cdd6]{background:var(--line-highlight,var(--color-code-line-highlight))}.highlighted .code-number[data-v-28c1cdd6]{border-left:4px solid var(--color-code-line-highlight-border);padding-left:4px}.strikethrough[data-v-28c1cdd6]{text-decoration-line:line-through;text-decoration-color:var(--color-figure-gray);opacity:.85}pre[data-v-28c1cdd6]{padding:14px 0;display:flex;overflow:unset;-webkit-overflow-scrolling:touch;white-space:pre;word-wrap:normal;height:100%;-moz-tab-size:var(--code-indentationWidth,4);-o-tab-size:var(--code-indentationWidth,4);tab-size:var(--code-indentationWidth,4)}@media only screeLine truncated
@@ -1,9 +0,0 @@
/*!
* This source file is part of the Swift.org open source project
*
* Copyright (c) 2021 Apple Inc. and the Swift project authors
* Licensed under Apache License v2.0 with Runtime Library Exception
*
* See https://swift.org/LICENSE.txt for license information
* See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/.betainfo[data-v-ba3b3cc0]{font-size:.9411764706rem;padding:3rem 0;background-color:var(--color-fill-secondary)}.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .betainfo-container[data-v-ba3b3cc0]{padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:980px}}@media only screen and (min-width:1500px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{max-width:1080px}}@media only screen and (max-width:735px){.full-width-container .betainfo-container[data-v-ba3b3cc0]{width:auto;padding-left:20px;padding-right:20px}}.static-width-container .betainfo-container[data-v-ba3b3cc0]{margin-left:auto;margin-right:auto;width:1536px;width:980px}@media only screen and (max-width:1250px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:692px}}@media only screen and (max-width:735px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:87.5%}}@media only screen and (max-width:320px){.static-width-container .betainfo-container[data-v-ba3b3cc0]{width:215px}}.betainfo-label[data-v-ba3b3cc0]{font-weight:600;font-size:.9411764706rem}.betainfo-content[data-v-ba3b3cc0] p{margin-bottom:10px}a[data-v-2ca5e993]{text-decoration:underline;color:inherit;font-weight:600}.summary-section[data-v-3aa6f694]:last-of-type{margin-right:0}@media only screen and (max-width:735px){.summary-section[data-v-3aa6f694]{margin-right:0}}.title[data-v-246c819c]{color:var(--colors-text,var(--color-text));font-size:.8235294118rem;margin-right:.5rem;text-rendering:optimizeLegibility}.language[data-v-0e39c0ba]{padding-bottom:10px;justify-content:flex-end}.language-list[data-v-0e39c0ba],.language[data-v-0e39c0ba]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin-top:0;display:flex;align-items:center}.language-option.swift[data-v-0e39c0ba]{padding-right:10px;border-right:1px solid var(--colors-secondary-label,var(--color-secondary-label))}.language-option.objc[data-v-0e39c0ba]{padding-left:10px}.view-more-link[data-v-3f54e653]{font-size:.8235294118rem;line-height:1.2857142857;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:flex;flex-flow:row-reverse;margin-bottom:1.3rem}.documentation-hero[data-v-0958f035]{color:var(--color-documentation-intro-figure,var(--color-figure-gray));overflow:hidden;position:relative;padding-inline-end:var(--doc-hero-right-offset)}.documentation-hero[data-v-0958f035]:before{content:"";background:var(--standard-accent-color,var(--color-documentation-intro-fill,var(--color-fill-tertiary)));position:absolute;width:100%;height:100%}.documentation-hero[data-v-0958f035]:after{background:transparent;opacity:.85;width:100%;position:absolute;content:"";height:100%;inset-inline-start:0;top:0}@media screen{[data-color-scheme=dark] .documentation-hero[data-v-0958f035]:after{opacity:.55}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .documentation-hero[data-v-0958f035]:after{opacity:.55}}.documentation-hero .icon[data-v-0958f035]{position:absolute;margin-top:10px;margin-inline-end:25px;inset-inline-end:0;width:250px;height:calc(100% - 20px);box-sizing:border-box}@media only screen and (max-width:735px){.documentation-hero .icon[data-v-0958f035]{display:none}}.documentation-hero .background-icon[data-v-0958f035]{color:var(--color-documentation-intro-accent,var(--color-figure-gray-secondary));display:block;width:250px;height:auto;opacity:.15;mix-blend-mode:normal;position:absolute;top:50%;inset-inline-start:0;transform:translateY(-50%);max-height:100%}.documentation-hero .background-icon[data-v-0958f035] img,.documentation-hero .background-icon[data-v-0958f035] svg{width:100%;height:100%}@media screen{[data-color-scheme=dark] .documentation-hero .background-icon[data-v-0958f035]{mix-blend-mode:normal;opacity:.15}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .documentation-hero .background-icon[data-v-0958f035]{mix-blend-mode:normal;opacity:.15}}.documentation-hero__content[data-v-0958f035]:not(.minimized-hero){padding-top:2.3529411765rem;padding-bottom:2.3529411765rem;position:relative;z-index:1}.full-width-container .documentation-hero__content[data-v-0958f035]:not(.minimized-hero){max-width:820px;margin-left:auto;margin-right:auto;padding-left:80px;padding-right:80px;box-sizing:border-box}@media print{.full-width-container .documentation-hero__content[data-v-0958f035]:not(.minimized-hero){padding-left:20px;padding-right:20px;max-width:none}}@media only screen and (min-width:1251px){.full-width-container .documentation-hero__content[data-v-0958f035]:not(.minimized-hero){max-width:980px}}@media only screen and (min-width:150Line truncated
-9
View File
@@ -1,9 +0,0 @@
/*!
* This source file is part of the Swift.org open source project
*
* Copyright (c) 2021 Apple Inc. and the Swift project authors
* Licensed under Apache License v2.0 with Runtime Library Exception
*
* See https://swift.org/LICENSE.txt for license information
* See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/.color-scheme-toggle[data-v-0c0360ce]{--toggle-color-fill:var(--color-button-background);--toggle-color-text:var(--color-fill-blue);font-size:.7058823529rem;line-height:1.3333333333;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);border:1px solid var(--toggle-color-fill);border-radius:var(--toggle-border-radius-outer,var(--border-radius,4px));display:inline-flex;padding:1px}@media screen{[data-color-scheme=dark] .color-scheme-toggle[data-v-0c0360ce]{--toggle-color-text:var(--color-figure-blue)}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .color-scheme-toggle[data-v-0c0360ce]{--toggle-color-text:var(--color-figure-blue)}}@media print{.color-scheme-toggle[data-v-0c0360ce]{display:none}}:root.no-js .color-scheme-toggle[data-v-0c0360ce]{visibility:hidden}input[data-v-0c0360ce]{position:absolute;clip:rect(1px,1px,1px,1px);clip-path:inset(0 0 99.9% 99.9%);overflow:hidden;height:1px;width:1px;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.fromkeyboard label[data-v-0c0360ce]:focus-within{outline:4px solid var(--color-focus-color);outline-offset:1px}.text[data-v-0c0360ce]{border:1px solid transparent;border-radius:var(--toggle-border-radius-inner,2px);color:var(--toggle-color-text);display:inline-block;text-align:center;padding:1px 6px;min-width:42px;box-sizing:border-box}.text[data-v-0c0360ce]:hover{cursor:pointer}input:checked+.text[data-v-0c0360ce]{--toggle-color-text:var(--color-button-text);background:var(--toggle-color-fill);border-color:var(--toggle-color-fill)}.footer[data-v-f1d65b2a]{border-top:1px solid var(--color-grid)}.row[data-v-f1d65b2a]{margin-left:auto;margin-right:auto;width:1536px;width:980px;display:flex;flex-direction:row-reverse;margin:20px auto}@media only screen and (max-width:1250px){.row[data-v-f1d65b2a]{width:692px}}@media only screen and (max-width:735px){.row[data-v-f1d65b2a]{width:87.5%}}@media only screen and (max-width:320px){.row[data-v-f1d65b2a]{width:215px}}@media only screen and (max-width:735px){.row[data-v-f1d65b2a]{width:100%;padding:0 .9411764706rem;box-sizing:border-box}}.InitialLoadingPlaceholder[data-v-35c356b6]{background:var(--colors-loading-placeholder-background,var(--color-loading-placeholder-background));height:100vh;width:100%}.svg-icon[data-v-06e5463e]{fill:var(--colors-svg-icon-fill-light,var(--color-svg-icon));transform:scale(1);-webkit-transform:scale(1);overflow:visible}.theme-dark .svg-icon[data-v-06e5463e]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}@media screen{[data-color-scheme=dark] .svg-icon[data-v-06e5463e]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto] .svg-icon[data-v-06e5463e]{fill:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}.svg-icon.icon-inline[data-v-06e5463e]{display:inline-block;vertical-align:middle;fill:currentColor}.svg-icon.icon-inline[data-v-06e5463e] .svg-icon-stroke{stroke:currentColor}[data-v-06e5463e] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-light,var(--color-svg-icon))}.theme-dark[data-v-06e5463e] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}@media screen{[data-color-scheme=dark][data-v-06e5463e] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}@media screen and (prefers-color-scheme:dark){[data-color-scheme=auto][data-v-06e5463e] .svg-icon-stroke{stroke:var(--colors-svg-icon-fill-dark,var(--color-svg-icon))}}.inline-chevron-right-icon[data-v-7413f2a0]{transform:scaleX(var(--scale-inline,1))}.suggest-lang[data-v-c2dca0ae]{background:#000;color:#fff;display:flex;justify-content:center;border-bottom:1px solid var(--color-grid)}.suggest-lang__wrapper[data-v-c2dca0ae]{display:flex;align-items:center;width:100%;max-width:var(--wrapper-max-width,1920px);margin:0 .9411764706rem;position:relative;height:52px}.suggest-lang__link[data-v-c2dca0ae]{font-size:.8235294118rem;line-height:1.4285714286;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);margin:0 auto;color:#09f}.suggest-lang__close-icon-wrapper[data-v-c2dca0ae]{position:absolute;right:-.2352941176rem;top:0;height:100%;box-sizing:border-box;display:flex;align-items:center;z-index:1}.suggest-lang__close-icon-button[data-v-c2dca0ae]{padding:.2352941176rem}.suggest-lang__close-icon-button .close-icon[data-v-c2dca0ae]{width:8px;display:block}.suggest-lang .inline-chevron-right-icon[data-v-c2dca0ae]{padding-left:.2352941176rem;width:8px}select[data-v-d21858a2]{font-size:.7058823529rem;line-height:1.3333333333;font-weight:600;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);color:var(--color-fill-blue);padding-right:15px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;cursor:pointer}select[data-v-d21858a2]:hover{text-decoration:underline}.locale-selectoLine truncated
-9
View File
@@ -1,9 +0,0 @@
/*!
* This source file is part of the Swift.org open source project
*
* Copyright (c) 2021 Apple Inc. and the Swift project authors
* Licensed under Apache License v2.0 with Runtime Library Exception
*
* See https://swift.org/LICENSE.txt for license information
* See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/.nav-title-content[data-v-854b4dd6]{max-width:100%}.title[data-v-854b4dd6]{color:var(--color-nav-root-title,currentColor);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-854b4dd6]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-854b4dd6]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-854b4dd6]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-854b4dd6]{color:var(--color-nav-dark-root-subhead)}.mobile-dropdown[data-v-2c27d339]{box-sizing:border-box}.nav--in-breakpoint-range .mobile-dropdown[data-v-2c27d339]{padding-left:.2352941176rem;padding-right:.2352941176rem}.mobile-dropdown ul[data-v-2c27d339]{list-style:none}.mobile-dropdown .option[data-v-2c27d339]{cursor:pointer;font-size:.7058823529rem;padding:.5rem 0;display:block;text-decoration:none;color:inherit}.mobile-dropdown .option[data-v-2c27d339]:focus{outline-offset:0}.mobile-dropdown .option.depth1[data-v-2c27d339]{padding-left:.4705882353rem}.active[data-v-2c27d339],.tutorial.router-link-active[data-v-2c27d339]{font-weight:600}.active[data-v-2c27d339]:focus,.tutorial.router-link-active[data-v-2c27d339]:focus{outline:none}.chapter-list[data-v-2c27d339]:not(:first-child){margin-top:1rem}.chapter-name[data-v-2c27d339],.tutorial[data-v-2c27d339]{padding:.5rem 0;font-size:1rem;line-height:1.4705882353;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.section-list[data-v-2c27d339],.tutorial-list[data-v-2c27d339]{padding:0 .5882352941rem}.chapter-list:last-child .tutorial-list[data-v-2c27d339]:last-child{padding-bottom:10em}.chapter-list[data-v-2c27d339]{display:inline-block}.form-element[data-v-f934959a]{position:relative}.form-dropdown[data-v-f934959a]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);display:block;box-sizing:border-box;width:100%;height:3.3em;color:var(--color-dropdown-text);padding:1.1176470588rem 2.3529411765rem 0 .9411764706rem;text-align:left;border:1px solid var(--color-dropdown-border);border-radius:var(--border-radius,4px);background-clip:padding-box;margin-bottom:.8235294118rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;min-height:32px}.form-dropdown[data-v-f934959a]:focus{box-shadow:0 0 0 4px var(--color-focus-color);outline:none;border-color:var(--color-focus-border-color)}.form-dropdown.no-eyebrow[data-v-f934959a]{padding-top:0}.form-dropdown[data-v-f934959a]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-text)}.form-dropdown[data-v-f934959a]::-ms-expand{opacity:0}.form-dropdown~.form-icon[data-v-f934959a]{position:absolute;display:block;pointer-events:none;fill:var(--color-figure-gray-tertiary);right:14px;width:13px;height:auto;top:50%;transform:translateY(-50%)}.is-open .form-dropdown~.form-icon[data-v-f934959a]{transform:translateY(-50%) scale(-1)}@media only screen and (max-width:735px){.form-dropdown~.form-icon[data-v-f934959a]{right:14px}}.form-dropdown~.form-label[data-v-f934959a]{font-size:.7058823529rem;line-height:1.75;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);position:absolute;top:.4705882353rem;left:17px;color:var(--color-figure-gray-secondary);pointer-events:none;padding:0;z-index:1}.form-dropdown[data-v-f934959a] option{color:var(--color-dropdown-text)}.form-dropdown-selectnone[data-v-f934959a]{color:transparent}.form-dropdown-selectnone~.form-label[data-v-f934959a]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif);top:19px;left:17px;color:var(--color-figure-gray-tertiary)}.form-dropdown-selectnone[data-v-f934959a]:-moz-focusring{text-shadow:none}.form-dropdown-selectnone[data-v-f934959a]::-ms-value{display:none}.theme-dark .form-dropdown[data-v-f934959a]{color:var(--color-dropdown-dark-text);background-color:var(--color-dropdown-dark-background);border-color:var(--color-dropdown-dark-border)}.theme-dark .form-dropdown~.form-label[data-v-f934959a]{color:#ccc}.theme-dark .form-dropdown[data-v-f934959a]:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--color-dropdown-dark-text)}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-f934959a]{color:transparent}.theme-dark .form-dropdown.form-dropdown-selectnone[data-v-f934959a]:-moz-focusring{text-shadow:none}.theme-dark .form-dropdown-selectnone~.form-label[data-v-f934959a]{color:#b0b0b0}.dropdown-small[data-v-6adda760]{height:30px;display:flex;align-items:center;position:relative;background:var(--color-fill)}.dropdown-small .form-dropdown-toggle[data-v-6adda760]{line-height:1.5;font-size:12px;padding-top:0;padding-bottom:0;padding-left:20px;min-height:unseLine truncated
-9
View File
@@ -1,9 +0,0 @@
/*!
* This source file is part of the Swift.org open source project
*
* Copyright (c) 2021 Apple Inc. and the Swift project authors
* Licensed under Apache License v2.0 with Runtime Library Exception
*
* See https://swift.org/LICENSE.txt for license information
* See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/.tutorials-navigation-link[data-v-e9f9b59c]{color:var(--color-tutorials-overview-navigation-link);transition:color .3s linear}.tutorials-navigation-link[data-v-e9f9b59c]:hover{text-decoration:none;transition:none;color:var(--color-tutorials-overview-navigation-link-hover)}.tutorials-navigation-link.active[data-v-e9f9b59c]{color:var(--color-tutorials-overview-navigation-link-active)}.tutorials-navigation-list[data-v-4e0180fa]{list-style-type:none;margin:0}.tutorials-navigation-list li+li[data-v-4e0180fa]:not(.volume--named){margin-top:24px}.tutorials-navigation-list .volume--named+.volume--named[data-v-4e0180fa]{margin-top:12px}.expand-enter-active,.expand-leave-active{transition:height .3s ease-in-out;overflow:hidden}.expand-enter,.expand-leave-to{height:0}.toggle[data-v-489416f8]{color:#f0f0f0;line-height:21px;display:flex;align-items:center;width:100%;font-weight:600;padding:6px 6px 6px 0;border-bottom:1px solid #2a2a2a;text-decoration:none;box-sizing:border-box}@media only screen and (max-width:767px){.toggle[data-v-489416f8]{padding-right:6px;border-bottom-color:hsla(0,0%,100%,.1)}}.toggle .text[data-v-489416f8]{word-break:break-word}.toggle[data-v-489416f8]:hover{text-decoration:none}.toggle .toggle-icon[data-v-489416f8]{display:inline-block;transition:transform .2s ease-in;height:.4em;width:.4em;margin-left:auto;margin-right:.2em}.collapsed .toggle .toggle-icon[data-v-489416f8]{transform:rotate(45deg)}.collapsed .toggle[data-v-489416f8],.collapsed .toggle[data-v-489416f8]:hover{color:#b0b0b0}.tutorials-navigation-menu-content[data-v-489416f8]{opacity:1;transition:height .2s ease-in,opacity .2s ease-in}.collapsed .tutorials-navigation-menu-content[data-v-489416f8]{height:0;opacity:0}.tutorials-navigation-menu-content .tutorials-navigation-list[data-v-489416f8]{padding:24px 0 12px 0}.tutorials-navigation[data-v-79093ed6]{font-size:1rem;line-height:1.2352941176;font-weight:400;font-family:var(--typography-html-font,"Helvetica Neue","Helvetica","Arial",sans-serif)}.nav-title-content[data-v-854b4dd6]{max-width:100%}.title[data-v-854b4dd6]{color:var(--color-nav-root-title,currentColor);text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block;vertical-align:top;max-width:296px}@media only screen and (max-width:1023px){.title[data-v-854b4dd6]{max-width:205px}}@media only screen and (max-width:767px){.title[data-v-854b4dd6]{flex-basis:fill;display:initial;vertical-align:initial;max-width:none}}.subhead[data-v-854b4dd6]{color:var(--color-nav-root-subhead)}.theme-dark .subhead[data-v-854b4dd6]{color:var(--color-nav-dark-root-subhead)}.nav[data-v-54bcce6d] .nav-menu{padding-top:0}.nav[data-v-54bcce6d] .nav-menu .nav-menu-items{margin-left:auto}@media only screen and (min-width:768px){.nav[data-v-54bcce6d] .nav-menu .nav-menu-items .in-page-navigation{display:none}}@media only screen and (min-width:320px)and (max-width:735px){.nav[data-v-54bcce6d] .nav-menu .nav-menu-items{padding:18px 0 40px}}.hero[data-v-400ffab5]{margin-left:auto;margin-right:auto;width:1536px;width:980px;padding-bottom:4.7058823529rem;padding-top:4.7058823529rem}@media only screen and (max-width:1250px){.hero[data-v-400ffab5]{width:692px}}@media only screen and (max-width:735px){.hero[data-v-400ffab5]{width:87.5%}}@media only screen and (max-width:320px){.hero[data-v-400ffab5]{width:215px}}@media screen{.hero[data-v-400ffab5]{--color-fill:#fff;--color-fill-secondary:#f7f7f7;--color-fill-tertiary:#f0f0f0;--color-fill-quaternary:#282828;--color-fill-blue:#00f;--color-fill-light-blue-secondary:#d1d1ff;--color-fill-gray:#ccc;--color-fill-gray-secondary:#f5f5f5;--color-fill-gray-tertiary:#f0f0f0;--color-fill-gray-quaternary:#f0f0f0;--color-fill-green-secondary:#f0fff0;--color-fill-orange-secondary:#fffaf6;--color-fill-red-secondary:#fff0f5;--color-figure-blue:#36f;--color-figure-gray:#000;--color-figure-gray-secondary:#666;--color-figure-gray-secondary-alt:#666;--color-figure-gray-tertiary:#666;--color-figure-green:green;--color-figure-light-gray:#666;--color-figure-orange:#c30;--color-figure-red:red;--color-tutorials-teal:#000;--color-article-background:var(--color-fill-tertiary);--color-article-body-background:var(--color-fill);--color-aside-deprecated:var(--color-figure-gray);--color-aside-deprecated-background:var(--color-fill-orange-secondary);--color-aside-deprecated-border:var(--color-figure-orange);--color-aside-experiment:var(--color-figure-gray);--color-aside-experiment-background:var(--color-fill-gray-secondary);--color-aside-experiment-border:var(--color-figure-light-gray);--color-aside-important:var(--color-figure-gray);--color-aside-important-background:var(--color-fill-gray-secondary);--color-aside-important-border:var(--color-figure-light-gray);--color-aside-note:var(--color-figure-gray);--color-aside-note-background:var(--color-fill-gray-secondary);--color-aside-note-border:var(--color-figure-light-gray);--color-aside-tip:var(--color-figure-gray);--color-aside-tip-background:var(--color-fill-gray-secondaryLine truncated
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"content":[{"type":"heading","text":"Overview","anchor":"Overview","level":2},{"type":"paragraph","inlineContent":[{"text":"The ","type":"text"},{"code":"amiibo-service","type":"codeVoice"},{"text":" library is a package that allows the developer to interact with the ","type":"text"},{"type":"reference","identifier":"https:\/\/www.amiiboapi.org","isActive":true},{"text":" backend service seamlessly, by not only providing the ","type":"text"},{"inlineContent":[{"type":"text","text":"service"}],"type":"emphasis"},{"text":" type but also any possible ","type":"text"},{"inlineContent":[{"type":"text","text":"models"}],"type":"emphasis"},{"text":", ","type":"text"},{"inlineContent":[{"type":"text","text":"filters"}],"type":"emphasis"},{"text":", ","type":"text"},{"inlineContent":[{"type":"text","text":"errors"}],"type":"emphasis"},{"text":" and ","type":"text"},{"inlineContent":[{"type":"text","text":"interfaces"}],"type":"emphasis"},{"text":" types that might be needed during implementation.","type":"text"}]},{"type":"heading","text":"Design","anchor":"Design","level":2},{"type":"paragraph","inlineContent":[{"text":"Although it could have been possible to generate a one-to-one RESTful client based on the Open API specification document that describe the available endpoints of the backend service, it was decided to design a ","type":"text"},{"code":"AmiiboService","type":"codeVoice"},{"text":" service type that removes the complexities of the API design imposed by the backend service, and provides the developer with a simple interface, and a seamless experience.","type":"text"}]},{"type":"heading","text":"Installation","anchor":"Installation","level":2},{"type":"paragraph","inlineContent":[{"text":"To use the ","type":"text"},{"code":"AmiiboService","type":"codeVoice"},{"text":" library with your package, then add it as a dependency in the ","type":"text"},{"code":"Package.swift","type":"codeVoice"},{"text":" file:","type":"text"}]},{"type":"codeListing","syntax":"swift","code":["let package = Package("," \/\/ name, platforms, products, etc."," dependencies: ["," .package(url: \"https:\/\/github.com\/rock-n-code\/amiibo-service\", from: \"2.0.0\"),"," \/\/ other dependencies"," ],"," targets: ["," .target("," name: \"SomeTarget\", "," dependencies: ["," .product(name: \"AmiiboService\", package: \"amiibo-service\"),"," ]"," )"," \/\/ other targets"," ]",")"]},{"type":"paragraph","inlineContent":[{"text":"It is also possible to use the ","type":"text"},{"code":"AmiiboService","type":"codeVoice"},{"text":" library with your app in Xcode, then add it as a dependency in your Xcode project.","type":"text"}]},{"type":"aside","style":"important","name":"Important","content":[{"inlineContent":[{"type":"text","text":"Swift 6.2 or higher is required in order to compile this library."}],"type":"paragraph"}]},{"type":"heading","text":"Usage","anchor":"Usage","level":2},{"type":"paragraph","inlineContent":[{"text":"Create an ","type":"text"},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboService","isActive":true},{"text":" instance and call any of its endpoints. Each endpoint accepts an optional filter and, when omitted, returns the full set of results:","type":"text"}]},{"type":"codeListing","syntax":"swift","code":["import AmiiboService","","let service = AmiiboService()","","\/\/ Fetch all amiibos","let amiibos = try await service.getAmiibos()","","\/\/ Fetch amiibos filtered by name","let zeldaAmiibos = try await service.getAmiibos(.init(name: \"zelda\"))","","\/\/ Fetch amiibo series, types, game characters, and game series","let series = try await service.getAmiiboSeries()","let types = try await service.getAmiiboTypes()","let characters = try await service.getGameCharacters()","let gameSeries = try await service.getGameSeries()","","\/\/ Fetch the last updated timestamp","let lastUpdated = try await service.getLastUpdated()"]},{"type":"heading","text":"Caching","anchor":"Caching","level":2},{"type":"paragraph","inlineContent":[{"text":"The ","type":"text"},{"overridingTitle":"Amiibo API","overridingTitleInlineContent":[{"type":"text","text":"Amiibo API"}],"type":"reference","identifier":"https:\/\/www.amiiboapi.org","isActive":true},{"text":" recommends that consumers who call the API regularly implement caching on their systems. This library does not include a built-in cache, leaving the choice of caching strategy to the consumer. The following examples show two common approaches.","type":"text"}]},{"type":"heading","text":"URLCache on the transport layer","anchor":"URLCache-on-the-transport-layer","level":3},{"type":"paragraph","inlineContent":[{"text":"Pass a custom ","type":"text"},{"code":"URLSessionTransport","type":"codeVoice"},{"text":" with a cache-configured ","type":"text"},{"code":"URLSession","type":"codeVoice"},{"text":"Line truncated
@@ -1 +0,0 @@
{"sections":[],"relationshipsSections":[{"kind":"relationships","identifiers":["doc:\/\/AmiiboService\/SQ","doc:\/\/AmiiboService\/SH","doc:\/\/AmiiboService\/s8SendableP","doc:\/\/AmiiboService\/s16SendableMetatypeP"],"title":"Conforms To","type":"conformsTo"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"type":"text","text":"A model that represents an amiibo."}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService"]]},"metadata":{"navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"title":"Amiibo","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A0V","symbolKind":"struct","roleHeading":"Structure","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}]},"topicSections":[{"anchor":"Nested-Models","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"],"title":"Nested Models"},{"anchor":"Instance-Properties","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameCharacter","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameSeries","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/identifier","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/name","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/platform-swift.property","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/release-swift.property","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/series","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/type"],"generated":true,"title":"Instance Properties"},{"anchor":"Default-Implementations","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Equatable-Implementations"],"generated":true,"title":"Default Implementations"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo"],"traits":[{"interfaceLanguage":"swift"}]}],"seeAlsoSections":[{"anchor":"Models","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboSeries","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboType","doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameCharacter","doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameSeries"],"generated":true,"title":"Models"}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}],"role":"symbol","title":"Amiibo.Usage","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Usage"}],"navigatorTitle":[{"kind":"identifier","text":"Usage"}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/platform-swift.property":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"platform","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V8PlatformV","text":"Platform","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.property","type":"topic","abstract":[{"type":"text","text":"The game platform data for this amiibo, if available."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/platform-swift.property","kind":"symbol","title":"platform","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","tLine truncated
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}],"kind":"declarations"}],"kind":"symbol","schemaVersion":{"patch":0,"major":0,"minor":3},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/!=(_:_:)","interfaceLanguage":"swift"},"metadata":{"title":"!=(_:_:)","modules":[{"name":"AmiiboService","relatedModules":["Swift"]}],"extendedModule":"Swift","role":"symbol","externalID":"s:SQsRi_zRi0_zrlE2neoiySbx_xtFZ::SYNTHESIZED::s:13AmiiboService0A0V","symbolKind":"op","roleHeading":"Operator","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/!=(_:_:)"]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/!=(_:_:)":{"role":"symbol","abstract":[],"title":"!=(_:_:)","url":"\/documentation\/amiiboservice\/amiibo\/!=(_:_:)","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"kind":"symbol"}}}
@@ -1 +0,0 @@
{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/equatable-implementations"]}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Equatable-Implementations","interfaceLanguage":"swift"},"metadata":{"modules":[{"name":"AmiiboService"}],"role":"collectionGroup","title":"Equatable Implementations","roleHeading":"API Collection"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"topicSections":[{"title":"Operators","generated":true,"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/!=(_:_:)"],"anchor":"Operators"}],"kind":"article","references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/!=(_:_:)":{"role":"symbol","abstract":[],"title":"!=(_:_:)","url":"\/documentation\/amiiboservice\/amiibo\/!=(_:_:)","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"}}}
@@ -1 +0,0 @@
{"sections":[],"relationshipsSections":[{"title":"Conforms To","type":"conformsTo","identifiers":["doc:\/\/AmiiboService\/SQ","doc:\/\/AmiiboService\/SH","doc:\/\/AmiiboService\/s8SendableP","doc:\/\/AmiiboService\/s16SendableMetatypeP"],"kind":"relationships"}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Game","kind":"identifier"}]}]}],"abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Game","kind":"identifier"}],"roleHeading":"Structure","title":"Amiibo.Game","navigatorTitle":[{"kind":"identifier","text":"Game"}],"externalID":"s:13AmiiboService0A0V4GameV","extendedModule":"AmiiboService","symbolKind":"struct","role":"symbol","modules":[{"name":"AmiiboService"}]},"schemaVersion":{"patch":0,"minor":3,"major":0},"topicSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/identifiers","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/name","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/usages"],"anchor":"Instance-Properties","title":"Instance Properties","generated":true},{"title":"Default Implementations","generated":true,"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/Equatable-Implementations"],"anchor":"Default-Implementations"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/game"],"traits":[{"interfaceLanguage":"swift"}]}],"seeAlsoSections":[{"title":"Nested Models","anchor":"Nested-Models","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"],"generated":true}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/name":{"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/name","abstract":[{"text":"The name of this game.","type":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/game\/name","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"kind":"symbol","title":"name","role":"symbol"},"doc://AmiiboService/s8SendableP":{"type":"unresolvable","title":"Swift.Sendable","identifier":"doc:\/\/AmiiboService\/s8SendableP"},"doc://AmiiboService/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/AmiiboService\/SQ"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}],"role":"symbol","title":"Amiibo.Usage","fragments":[{"kind":"keyword","text":"struct"},{"kind":"teLine truncated
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/!=(_:_:)"},"metadata":{"externalID":"s:SQsRi_zRi0_zrlE2neoiySbx_xtFZ::SYNTHESIZED::s:13AmiiboService0A0V4GameV","title":"!=(_:_:)","symbolKind":"op","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"extendedModule":"Swift","roleHeading":"Operator","modules":[{"name":"AmiiboService","relatedModules":["Swift"]}],"role":"symbol"},"sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/game\/!=(_:_:)"]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/!=(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"url":"\/documentation\/amiiboservice\/amiibo\/game\/!=(_:_:)","type":"topic","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/!=(_:_:)","kind":"symbol","title":"!=(_:_:)","role":"symbol"}}}
@@ -1 +0,0 @@
{"sections":[],"kind":"article","schemaVersion":{"minor":3,"patch":0,"major":0},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"metadata":{"roleHeading":"API Collection","role":"collectionGroup","title":"Equatable Implementations","modules":[{"name":"AmiiboService"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/Equatable-Implementations"},"topicSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/!=(_:_:)"],"generated":true,"anchor":"Operators","title":"Operators"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/game\/equatable-implementations"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/!=(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}],"url":"\/documentation\/amiiboservice\/amiibo\/game\/!=(_:_:)","type":"topic","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/!=(_:_:)","kind":"symbol","title":"!=(_:_:)","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"}}}
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"identifiers","kind":"identifier"},{"text":": [","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"]","kind":"text"}],"externalID":"s:13AmiiboService0A0V4GameV11identifiersSaySSGvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"identifiers","role":"symbol"},"abstract":[{"type":"text","text":"A list of game identifiers associated with this game."}],"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/identifiers","interfaceLanguage":"swift"},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"identifiers"},{"kind":"text","text":": ["},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"]","kind":"text"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/game\/identifiers"]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/identifiers":{"title":"identifiers","type":"topic","abstract":[{"type":"text","text":"A list of game identifiers associated with this game."}],"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/identifiers","url":"\/documentation\/amiiboservice\/amiibo\/game\/identifiers","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"identifiers","kind":"identifier"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"]","kind":"text"}]}}}
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"abstract":[{"text":"The name of this game.","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/name"},"metadata":{"externalID":"s:13AmiiboService0A0V4GameV4nameSSvp","title":"name","symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"role":"symbol"},"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/game\/name"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/name":{"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/name","abstract":[{"text":"The name of this game.","type":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/game\/name","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"kind":"symbol","title":"name","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"}}}
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"usages"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V5UsageV","text":"Usage","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"},{"text":"]?","kind":"text"}]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"A list of amiibo usages within this game, if available."}],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/usages"},"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"usages"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V5UsageV","kind":"typeIdentifier","text":"Usage"},{"kind":"text","text":"]?"}],"roleHeading":"Instance Property","title":"usages","externalID":"s:13AmiiboService0A0V4GameV6usagesSayAC5UsageVGSgvp","symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/game\/usages"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/usages":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"usages","kind":"identifier"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V5UsageV","text":"Usage"},{"kind":"text","text":"]?"}],"url":"\/documentation\/amiiboservice\/amiibo\/game\/usages","type":"topic","abstract":[{"type":"text","text":"A list of amiibo usages within this game, if available."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/usages","kind":"symbol","title":"usages","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}],"role":"symbol","title":"Amiibo.Usage","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Usage"}],"navigatorTitle":[{"kind":"identifier","text":"Usage"}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"}}}
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameCharacter","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]}],"kind":"declarations"}],"abstract":[{"text":"The name of the game character associated with this amiibo.","type":"text"}],"kind":"symbol","identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameCharacter","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"title":"gameCharacter","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A0V13gameCharacterSSvp","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameCharacter","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}]},"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/gamecharacter"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/gameCharacter":{"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/gamecharacter","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameCharacter","abstract":[{"type":"text","text":"The name of the game character associated with this amiibo."}],"type":"topic","title":"gameCharacter","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameCharacter","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"}}}
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameSeries"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"externalID":"s:13AmiiboService0A0V10gameSeriesSSvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"gameSeries","role":"symbol"},"abstract":[{"type":"text","text":"The name of the game series associated with this amiibo."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameSeries"},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameSeries","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/gameseries"]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/gameSeries":{"title":"gameSeries","abstract":[{"type":"text","text":"The name of the game series associated with this amiibo."}],"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameSeries","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/gameseries","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameSeries"},{"kind":"text","text":": "},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}]}}}
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"abstract":[{"text":"The first 8 hexadecimal characters of the amiibo identifier.","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head"},"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"head"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"externalID":"s:13AmiiboService0A0V4headSSvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"head","role":"symbol"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"head"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/head"]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/head":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"head"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"url":"\/documentation\/amiiboservice\/amiibo\/head","type":"topic","abstract":[{"type":"text","text":"The first 8 hexadecimal characters of the amiibo identifier."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","kind":"symbol","title":"head","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"}}}
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"externalID":"s:13AmiiboService0A0V10identifierSSvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"identifier","role":"symbol"},"abstract":[{"type":"text","text":"The full 16-character hexadecimal identifier, composed of the "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","isActive":true},{"type":"text","text":" and "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","isActive":true},{"type":"text","text":"."}],"schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/identifier"},"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/identifier"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/head":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"head"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"url":"\/documentation\/amiiboservice\/amiibo\/head","type":"topic","abstract":[{"type":"text","text":"The first 8 hexadecimal characters of the amiibo identifier."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","kind":"symbol","title":"head","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/tail":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"tail"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"url":"\/documentation\/amiiboservice\/amiibo\/tail","type":"topic","abstract":[{"type":"text","text":"The last 8 hexadecimal characters of the amiibo identifier."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","kind":"symbol","title":"tail","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/identifier":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"url":"\/documentation\/amiiboservice\/amiibo\/identifier","type":"topic","abstract":[{"type":"text","text":"The full 16-character hexadecimal identifier, composed of the "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","isActive":true},{"type":"text","text":" and "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","isActive":true},{"type":"text","text":"."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/identifier","kind":"symbol","title":"identifier","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"}}}
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"image"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"externalID":"s:13AmiiboService0A0V5imageSSvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"image","role":"symbol"},"abstract":[{"text":"A URL string pointing to the image of this amiibo.","type":"text"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"image","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/image"]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/image":{"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"image"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/image","type":"topic","abstract":[{"text":"A URL string pointing to the image of this amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","kind":"symbol","title":"image","role":"symbol"}}}
@@ -1 +0,0 @@
{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL"},"abstract":[{"text":"A URL constructed from the ","type":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","isActive":true,"type":"reference"},{"text":" string, if valid.","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation3URLV","text":"URL","kind":"typeIdentifier"},{"text":"? { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}]}],"kind":"declarations"}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation3URLV","text":"URL","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"roleHeading":"Instance Property","title":"imageURL","externalID":"s:13AmiiboService0A0V8imageURL10Foundation0D0VSgvp","symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/imageurl"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/image":{"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"image"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/image","type":"topic","abstract":[{"text":"A URL string pointing to the image of this amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","kind":"symbol","title":"image","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/imageURL":{"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL","abstract":[{"text":"A URL constructed from the ","type":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","isActive":true,"type":"reference"},{"text":" string, if valid.","type":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/imageurl","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation3URLV","text":"URL","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"kind":"symbol","title":"imageURL","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"}}}
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"abstract":[{"type":"text","text":"The name of this amiibo."}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/name","interfaceLanguage":"swift"},"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}],"externalID":"s:13AmiiboService0A0V4nameSSvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"name","role":"symbol"},"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/name"]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/name":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"url":"\/documentation\/amiiboservice\/amiibo\/name","type":"topic","abstract":[{"text":"The name of this amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/name","kind":"symbol","title":"name","role":"symbol"}}}
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"platform","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Platform","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V8PlatformV"},{"text":"?","kind":"text"}],"externalID":"s:13AmiiboService0A0V8platformAC8PlatformVSgvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"platform","role":"symbol"},"abstract":[{"type":"text","text":"The game platform data for this amiibo, if available."}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/platform-swift.property","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"platform","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Platform","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V8PlatformV"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.property"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/platform-swift.property":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"platform","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V8PlatformV","text":"Platform","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.property","type":"topic","abstract":[{"type":"text","text":"The game platform data for this amiibo, if available."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/platform-swift.property","kind":"symbol","title":"platform","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Platform"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","navigatorTitle":[{"kind":"identifier","text":"Platform"}],"type":"topic","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"text":", ","type":"text"},{"type":"codeVoice","code":"3DS"},{"text":", and ","type":"text"},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","role":"symbol"}}}
@@ -1 +0,0 @@
{"relationshipsSections":[{"kind":"relationships","identifiers":["doc:\/\/AmiiboService\/SQ","doc:\/\/AmiiboService\/SH","doc:\/\/AmiiboService\/s8SendableP","doc:\/\/AmiiboService\/s16SendableMetatypeP"],"title":"Conforms To","type":"conformsTo"}],"sections":[],"kind":"symbol","identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","interfaceLanguage":"swift"},"metadata":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Platform","kind":"identifier"}],"roleHeading":"Structure","title":"Amiibo.Platform","navigatorTitle":[{"text":"Platform","kind":"identifier"}],"extendedModule":"AmiiboService","externalID":"s:13AmiiboService0A0V8PlatformV","symbolKind":"struct","role":"symbol","modules":[{"name":"AmiiboService"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"schemaVersion":{"minor":3,"patch":0,"major":0},"abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"type":"text","text":", "},{"type":"codeVoice","code":"Switch 2"},{"type":"text","text":", "},{"type":"codeVoice","code":"3DS"},{"type":"text","text":", and "},{"type":"codeVoice","code":"Wii U"},{"type":"text","text":" games related to an amiibo."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Platform","kind":"identifier"}]}]}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.struct"],"traits":[{"interfaceLanguage":"swift"}]}],"topicSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/switch","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/switch2","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/threeDS","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/wiiU"],"generated":true,"anchor":"Instance-Properties","title":"Instance Properties"},{"anchor":"Default-Implementations","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/Equatable-Implementations"],"generated":true,"title":"Default Implementations"}],"seeAlsoSections":[{"anchor":"Nested-Models","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"],"generated":true,"title":"Nested Models"}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/threeDS":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/threeDS","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/threeds","abstract":[{"type":"text","text":"A list of "},{"type":"codeVoice","code":"3DS"},{"type":"text","text":" games related to an amiibo."}],"role":"symbol","title":"threeDS","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"threeDS"},{"kind":"text","text":": ["},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","kind":"typeIdentifier","text":"Game"},{"kind":"text","text":"]"}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/s8SendableP":{"identifier":"doc:\/\/AmiiboService\/s8SendableP","type":"unresolvable","title":"Swift.Sendable"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/Equatable-Implementations":{"kind":"article","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/Equatable-Implementations","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/equatable-implementatLine truncated
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/!=(_:_:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"lhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"sections":[],"kind":"symbol","metadata":{"fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"roleHeading":"Operator","title":"!=(_:_:)","extendedModule":"Swift","externalID":"s:SQsRi_zRi0_zrlE2neoiySbx_xtFZ::SYNTHESIZED::s:13AmiiboService0A0V8PlatformV","symbolKind":"op","role":"symbol","modules":[{"relatedModules":["Swift"],"name":"AmiiboService"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/!=(_:_:)":{"role":"symbol","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/!=(_:_:)","title":"!=(_:_:)","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Platform"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","navigatorTitle":[{"kind":"identifier","text":"Platform"}],"type":"topic","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"text":", ","type":"text"},{"type":"codeVoice","code":"3DS"},{"text":", and ","type":"text"},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","role":"symbol"}}}
@@ -1 +0,0 @@
{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/equatable-implementations"]}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"]]},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/Equatable-Implementations","interfaceLanguage":"swift"},"metadata":{"roleHeading":"API Collection","modules":[{"name":"AmiiboService"}],"title":"Equatable Implementations","role":"collectionGroup"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/!=(_:_:)"],"anchor":"Operators","generated":true}],"kind":"article","references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Platform"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","navigatorTitle":[{"kind":"identifier","text":"Platform"}],"type":"topic","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"text":", ","type":"text"},{"type":"codeVoice","code":"3DS"},{"text":", and ","type":"text"},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/!=(_:_:)":{"role":"symbol","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/!=(_:_:)","title":"!=(_:_:)","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/!=(_:_:)","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"kind":"symbol"}}}
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/switch","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A list of "},{"type":"codeVoice","code":"Switch"},{"type":"text","text":" games related to an amiibo."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"`switch`","kind":"identifier"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","text":"Game","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"},{"text":"]","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"]]},"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"`switch`","kind":"identifier"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","text":"Game","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"roleHeading":"Instance Property","title":"switch","externalID":"s:13AmiiboService0A0V8PlatformV6switchSayAC4GameVGvp","symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/switch"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Platform"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","navigatorTitle":[{"kind":"identifier","text":"Platform"}],"type":"topic","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"text":", ","type":"text"},{"type":"codeVoice","code":"3DS"},{"text":", and ","type":"text"},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/switch":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/switch","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/switch","abstract":[{"type":"text","text":"A list of "},{"type":"codeVoice","code":"Switch"},{"type":"text","text":" games related to an amiibo."}],"role":"symbol","title":"switch","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"`switch`"},{"kind":"text","text":": ["},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","kind":"typeIdentifier","text":"Game"},{"kind":"text","text":"]"}]}}}
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"switch2"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","text":"Game","preciseIdentifier":"s:13AmiiboService0A0V4GameV"},{"kind":"text","text":"]"}],"externalID":"s:13AmiiboService0A0V8PlatformV7switch2SayAC4GameVGvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"switch2","role":"symbol"},"abstract":[{"text":"A list of ","type":"text"},{"code":"Switch 2","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/switch2","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"patch":0,"major":0},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"switch2"},{"kind":"text","text":": ["},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","kind":"typeIdentifier","text":"Game","preciseIdentifier":"s:13AmiiboService0A0V4GameV"},{"kind":"text","text":"]"}]}]}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/switch2"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Platform"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","navigatorTitle":[{"kind":"identifier","text":"Platform"}],"type":"topic","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"text":", ","type":"text"},{"type":"codeVoice","code":"3DS"},{"text":", and ","type":"text"},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/switch2":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"switch2","kind":"identifier"},{"text":": [","kind":"text"},{"text":"Game","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V4GameV"},{"text":"]","kind":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/switch2","type":"topic","abstract":[{"text":"A list of ","type":"text"},{"code":"Switch 2","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/switch2","kind":"symbol","title":"switch2","role":"symbol"}}}
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/threeDS","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A list of "},{"type":"codeVoice","code":"3DS"},{"type":"text","text":" games related to an amiibo."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"threeDS","kind":"identifier"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","text":"Game","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"},{"text":"]","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"]]},"sections":[],"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"threeDS","kind":"identifier"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","text":"Game","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"roleHeading":"Instance Property","title":"threeDS","externalID":"s:13AmiiboService0A0V8PlatformV7threeDSSayAC4GameVGvp","symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/threeds"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/threeDS":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/threeDS","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/threeds","abstract":[{"type":"text","text":"A list of "},{"type":"codeVoice","code":"3DS"},{"type":"text","text":" games related to an amiibo."}],"role":"symbol","title":"threeDS","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"threeDS"},{"kind":"text","text":": ["},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","kind":"typeIdentifier","text":"Game"},{"kind":"text","text":"]"}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Platform"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","navigatorTitle":[{"kind":"identifier","text":"Platform"}],"type":"topic","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"text":", ","type":"text"},{"type":"codeVoice","code":"3DS"},{"text":", and ","type":"text"},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"}}}
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/wiiU","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A list of "},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"wiiU"},{"text":": [","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V4GameV","text":"Game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"},{"text":"]","kind":"text"}]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"]]},"metadata":{"title":"wiiU","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A0V8PlatformV4wiiUSayAC4GameVGvp","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"wiiU"},{"kind":"text","text":": ["},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","text":"Game","kind":"typeIdentifier"},{"kind":"text","text":"]"}]},"sections":[],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/wiiu"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/wiiU":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/wiiU","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/wiiu","abstract":[{"type":"text","text":"A list of "},{"type":"codeVoice","code":"Wii U"},{"type":"text","text":" games related to an amiibo."}],"role":"symbol","title":"wiiU","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"wiiU"},{"kind":"text","text":": ["},{"preciseIdentifier":"s:13AmiiboService0A0V4GameV","kind":"typeIdentifier","text":"Game"},{"kind":"text","text":"]"}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Platform"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","navigatorTitle":[{"kind":"identifier","text":"Platform"}],"type":"topic","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"text":", ","type":"text"},{"type":"codeVoice","code":"3DS"},{"text":", and ","type":"text"},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","role":"symbol"}}}
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"abstract":[{"text":"The release dates of this amiibo across different regions.","type":"text"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/release-swift.property","interfaceLanguage":"swift"},"metadata":{"externalID":"s:13AmiiboService0A0V7releaseAC7ReleaseVvp","symbolKind":"property","title":"release","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"release","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Release","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV"}],"roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"role":"symbol"},"sections":[],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"release"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV","text":"Release","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.property"]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Release"}],"title":"Amiibo.Release","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Release","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","role":"symbol","abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/release-swift.property":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"release"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Release","preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.property","type":"topic","abstract":[{"type":"text","text":"The release dates of this amiibo across different regions."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/release-swift.property","kind":"symbol","title":"release","role":"symbol"}}}
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"externalID":"s:13AmiiboService0A0V7ReleaseV","symbolKind":"struct","extendedModule":"AmiiboService","navigatorTitle":[{"text":"Release","kind":"identifier"}],"modules":[{"name":"AmiiboService"}],"roleHeading":"Structure","title":"Amiibo.Release","role":"symbol"},"relationshipsSections":[{"identifiers":["doc:\/\/AmiiboService\/SQ","doc:\/\/AmiiboService\/SH","doc:\/\/AmiiboService\/s8SendableP","doc:\/\/AmiiboService\/s16SendableMetatypeP"],"type":"conformsTo","title":"Conforms To","kind":"relationships"}],"seeAlsoSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"],"anchor":"Nested-Models","title":"Nested Models","generated":true}],"abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}],"topicSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/america","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/australia","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/europe","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/japan"],"anchor":"Instance-Properties","title":"Instance Properties","generated":true},{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/Equatable-Implementations"],"anchor":"Default-Implementations","title":"Default Implementations","generated":true}],"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","interfaceLanguage":"swift"},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]},{"content":[{"type":"heading","text":"Overview","anchor":"overview","level":2},{"type":"paragraph","inlineContent":[{"type":"text","text":"The service provides these dates as date-only values, which are decoded as midnight UTC."}]}],"kind":"content"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"Game"}],"url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"type":"topic","title":"Amiibo.Game","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/japan":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"japan"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"kind":"text","text":"?"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/japan","type":"topic","abstract":[{"type":"text","text":"A release date for Japan, if any."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/japan","kind":"symbol","title":"japan","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/s8SendableP":{"type":"unresolvable","title":"Swift.Sendable","identifier":"doc:\/\/AmiiboService\/s8SendableP"},"doc://AmiiboService/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/AmiiboService\/SQ"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentatioLine truncated
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/!=(_:_:)","interfaceLanguage":"swift"},"metadata":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"externalID":"s:SQsRi_zRi0_zrlE2neoiySbx_xtFZ::SYNTHESIZED::s:13AmiiboService0A0V7ReleaseV","symbolKind":"op","extendedModule":"Swift","modules":[{"name":"AmiiboService","relatedModules":["Swift"]}],"roleHeading":"Operator","title":"!=(_:_:)","role":"symbol"},"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"text":", ","kind":"text"},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Release"}],"title":"Amiibo.Release","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Release","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","role":"symbol","abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/!=(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/!=(_:_:)","type":"topic","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/!=(_:_:)","kind":"symbol","title":"!=(_:_:)","role":"symbol"}}}
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"america"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"kind":"text","text":"?"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"type":"text","text":"A release date for North America, if any."}],"kind":"symbol","identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/america","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"metadata":{"title":"america","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A0V7ReleaseV7america10Foundation4DateVSgvp","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"america","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Date","preciseIdentifier":"s:10Foundation4DateV","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/america"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Release"}],"title":"Amiibo.Release","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Release","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","role":"symbol","abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/america":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"america","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation4DateV","text":"Date","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/america","type":"topic","abstract":[{"type":"text","text":"A release date for North America, if any."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/america","kind":"symbol","title":"america","role":"symbol"}}}
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"australia"},{"text":": ","kind":"text"},{"text":"Date","preciseIdentifier":"s:10Foundation4DateV","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"text":"A release date for Australia, if any.","type":"text"}],"kind":"symbol","identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/australia","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"metadata":{"title":"australia","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A0V7ReleaseV9australia10Foundation4DateVSgvp","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"australia"},{"kind":"text","text":": "},{"text":"Date","preciseIdentifier":"s:10Foundation4DateV","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/australia"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/australia":{"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/australia","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/australia","abstract":[{"type":"text","text":"A release date for Australia, if any."}],"type":"topic","title":"australia","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"australia","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Date","preciseIdentifier":"s:10Foundation4DateV"},{"text":"?","kind":"text"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Release"}],"title":"Amiibo.Release","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Release","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","role":"symbol","abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"}}}
@@ -1 +0,0 @@
{"metadata":{"title":"Equatable Implementations","modules":[{"name":"AmiiboService"}],"role":"collectionGroup","roleHeading":"API Collection"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/!=(_:_:)"],"anchor":"Operators","generated":true}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/Equatable-Implementations","interfaceLanguage":"swift"},"sections":[],"kind":"article","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/equatable-implementations"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Release"}],"title":"Amiibo.Release","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Release","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","role":"symbol","abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/!=(_:_:)":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/!=(_:_:)","type":"topic","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/!=(_:_:)","kind":"symbol","title":"!=(_:_:)","role":"symbol"}}}
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/europe","interfaceLanguage":"swift"},"abstract":[{"text":"A release date for Europe, if any.","type":"text"}],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"europe","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation4DateV","kind":"typeIdentifier","text":"Date"},{"text":"?","kind":"text"}]}],"kind":"declarations"}],"sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"europe","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"text":"?","kind":"text"}],"externalID":"s:13AmiiboService0A0V7ReleaseV6europe10Foundation4DateVSgvp","symbolKind":"property","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","title":"europe","role":"symbol"},"kind":"symbol","variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/europe"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/europe":{"abstract":[{"text":"A release date for Europe, if any.","type":"text"}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/europe","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/europe","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"europe"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"text":"?","kind":"text"}],"kind":"symbol","title":"europe","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Release"}],"title":"Amiibo.Release","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Release","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","role":"symbol","abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}]}}}
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/japan","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A release date for Japan, if any."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"japan"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Date","preciseIdentifier":"s:10Foundation4DateV"},{"kind":"text","text":"?"}],"platforms":["macOS"]}]}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"japan"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"kind":"text","text":"?"}],"modules":[{"name":"AmiiboService"}],"symbolKind":"property","title":"japan","role":"symbol","externalID":"s:13AmiiboService0A0V7ReleaseV5japan10Foundation4DateVSgvp","roleHeading":"Instance Property"},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/japan"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Release"}],"title":"Amiibo.Release","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Release","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","role":"symbol","abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/japan":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"japan"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"kind":"text","text":"?"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/japan","type":"topic","abstract":[{"type":"text","text":"A release date for Japan, if any."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/japan","kind":"symbol","title":"japan","role":"symbol"}}}
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/series","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The name of the amiibo series this amiibo belongs to."}],"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"series","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]}],"kind":"declarations"}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"series","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"roleHeading":"Instance Property","title":"series","externalID":"s:13AmiiboService0A0V6seriesSSvp","symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/series"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/series":{"title":"series","abstract":[{"type":"text","text":"The name of the amiibo series this amiibo belongs to."}],"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/series","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/series","role":"symbol","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"series"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}]}}}
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"tail","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]}]}],"abstract":[{"type":"text","text":"The last 8 hexadecimal characters of the amiibo identifier."}],"kind":"symbol","schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"tail","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"roleHeading":"Instance Property","title":"tail","externalID":"s:13AmiiboService0A0V4tailSSvp","symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/tail"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/tail":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"tail"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"url":"\/documentation\/amiiboservice\/amiibo\/tail","type":"topic","abstract":[{"type":"text","text":"The last 8 hexadecimal characters of the amiibo identifier."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","kind":"symbol","title":"tail","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"}}}
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"type","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"abstract":[{"type":"text","text":"The type of this amiibo (e.g., Figure, Card, Yarn, Band)."}],"kind":"symbol","identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/type","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"title":"type","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A0V4typeSSvp","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"type","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}]},"schemaVersion":{"minor":3,"patch":0,"major":0},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/type":{"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/type","abstract":[{"type":"text","text":"The type of this amiibo (e.g., Figure, Card, Yarn, Band)."}],"url":"\/documentation\/amiiboservice\/amiibo\/type","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"type","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"kind":"symbol","title":"type","role":"symbol"}}}
@@ -1 +0,0 @@
{"sections":[],"relationshipsSections":[{"type":"conformsTo","title":"Conforms To","kind":"relationships","identifiers":["doc:\/\/AmiiboService\/SQ","doc:\/\/AmiiboService\/SH","doc:\/\/AmiiboService\/s8SendableP","doc:\/\/AmiiboService\/s16SendableMetatypeP"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Usage","kind":"identifier"}],"platforms":["macOS"],"languages":["swift"]}]}],"abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Usage","kind":"identifier"}],"externalID":"s:13AmiiboService0A0V5UsageV","symbolKind":"struct","extendedModule":"AmiiboService","navigatorTitle":[{"text":"Usage","kind":"identifier"}],"modules":[{"name":"AmiiboService"}],"roleHeading":"Structure","title":"Amiibo.Usage","role":"symbol"},"topicSections":[{"anchor":"Instance-Properties","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/explanation","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/isWriteable"],"generated":true,"title":"Instance Properties"},{"anchor":"Default-Implementations","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/Equatable-Implementations"],"generated":true,"title":"Default Implementations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/usage"]}],"seeAlsoSections":[{"anchor":"Nested-Models","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"],"generated":true,"title":"Nested Models"}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Platform"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","navigatorTitle":[{"kind":"identifier","text":"Platform"}],"type":"topic","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"text":", ","type":"text"},{"type":"codeVoice","code":"3DS"},{"text":", and ","type":"text"},{"code":"Wii U","type":"codeVoice"},{"text":" games related to an amiibo.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/Equatable-Implementations":{"type":"topic","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/Equatable-Implementations","url":"\/documentation\/amiiboservice\/amiibo\/usage\/equatable-implementations","kind":"article","title":"Equatable Implementations","role":"collectionGroup"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Release"}],"title":"Amiibo.Release","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Release","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","role":"symbol","abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}]},"doc://AmiiboService/SQ":{"type":"unresolvable","title":"Swift.Equatable","identifier":"doc:\/\/AmiiboService\/SQ"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a cerLine truncated
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"internalParam","text":"lhs"},{"kind":"text","text":": "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"internalParam","text":"rhs"},{"kind":"text","text":": "},{"kind":"keyword","text":"borrowing"},{"kind":"text","text":" "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}],"kind":"declarations"}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/!=(_:_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"]]},"metadata":{"title":"!=(_:_:)","modules":[{"relatedModules":["Swift"],"name":"AmiiboService"}],"extendedModule":"Swift","role":"symbol","externalID":"s:SQsRi_zRi0_zrlE2neoiySbx_xtFZ::SYNTHESIZED::s:13AmiiboService0A0V5UsageV","symbolKind":"op","roleHeading":"Operator","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/usage\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}],"role":"symbol","title":"Amiibo.Usage","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Usage"}],"navigatorTitle":[{"kind":"identifier","text":"Usage"}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/!=(_:_:)":{"title":"!=(_:_:)","type":"topic","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/!=(_:_:)","kind":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/usage\/!=(_:_:)","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"}}}
@@ -1 +0,0 @@
{"sections":[],"kind":"article","schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/Equatable-Implementations","interfaceLanguage":"swift"},"metadata":{"roleHeading":"API Collection","modules":[{"name":"AmiiboService"}],"title":"Equatable Implementations","role":"collectionGroup"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"]]},"topicSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/!=(_:_:)"],"anchor":"Operators","title":"Operators","generated":true}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/usage\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}],"role":"symbol","title":"Amiibo.Usage","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Usage"}],"navigatorTitle":[{"kind":"identifier","text":"Usage"}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/!=(_:_:)":{"title":"!=(_:_:)","type":"topic","abstract":[],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/!=(_:_:)","kind":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/usage\/!=(_:_:)","role":"symbol","fragments":[{"text":"static","kind":"keyword"},{"text":" ","kind":"text"},{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"!=","kind":"identifier"},{"text":" ","kind":"text"},{"text":"(","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"borrowing","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}]}}}
@@ -1 +0,0 @@
{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/explanation"},"abstract":[{"text":"A description of how the amiibo is used within the game.","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"explanation","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]}],"kind":"declarations"}],"sections":[],"kind":"symbol","metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"explanation","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"roleHeading":"Instance Property","title":"explanation","externalID":"s:13AmiiboService0A0V5UsageV11explanationSSvp","symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/usage\/explanation"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}],"role":"symbol","title":"Amiibo.Usage","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Usage"}],"navigatorTitle":[{"kind":"identifier","text":"Usage"}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/explanation":{"abstract":[{"text":"A description of how the amiibo is used within the game.","type":"text"}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/explanation","url":"\/documentation\/amiiboservice\/amiibo\/usage\/explanation","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"explanation","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"kind":"symbol","title":"explanation","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"}}}
@@ -1 +0,0 @@
{"metadata":{"role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isWriteable","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"isWriteable","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V5UsageV11isWriteableSbvp","symbolKind":"property"},"abstract":[{"type":"text","text":"A flag that indicates whether the amiibo can save game data."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/isWriteable","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isWriteable","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}]}]}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/usage\/iswriteable"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"symbol","title":"Amiibo","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/isWriteable":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/isWriteable","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage\/iswriteable","abstract":[{"type":"text","text":"A flag that indicates whether the amiibo can save game data."}],"role":"symbol","title":"isWriteable","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"isWriteable"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}],"role":"symbol","title":"Amiibo.Usage","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Usage"}],"navigatorTitle":[{"kind":"identifier","text":"Usage"}]}}}
@@ -1 +0,0 @@
{"relationshipsSections":[{"type":"inheritsFrom","title":"Inherits From","kind":"relationships","identifiers":["doc:\/\/AmiiboService\/s8SendableP","doc:\/\/AmiiboService\/s16SendableMetatypeP"]},{"type":"conformingTypes","title":"Conforming Types","kind":"relationships","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboLiveClient"]}],"sections":[],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient"},"metadata":{"fragments":[{"text":"protocol","kind":"keyword"},{"kind":"text","text":" "},{"text":"AmiiboClient","kind":"identifier"}],"roleHeading":"Protocol","title":"AmiiboClient","navigatorTitle":[{"kind":"identifier","text":"AmiiboClient"}],"externalID":"s:13AmiiboService0A6ClientP","symbolKind":"protocol","role":"symbol","modules":[{"name":"AmiiboService"}]},"schemaVersion":{"major":0,"minor":3,"patch":0},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService"]]},"abstract":[{"type":"text","text":"A protocol that defines API clients containing all available endpoints to interact with."}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"AmiiboClient","kind":"identifier"},{"text":" : ","kind":"text"},{"text":"Sendable","preciseIdentifier":"s:s8SendableP","kind":"typeIdentifier"}]}]},{"content":[{"level":2,"text":"Overview","anchor":"overview","type":"heading"},{"inlineContent":[{"type":"text","text":"Conforming types must be "},{"type":"codeVoice","code":"Sendable"},{"type":"text","text":", as clients are expected to be used safely across concurrency domains."}],"type":"paragraph"}],"kind":"content"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiiboclient"],"traits":[{"interfaceLanguage":"swift"}]}],"topicSections":[{"title":"Amiibo endpoints","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiibos(by:)","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiiboSeries(by:)","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiiboTypes(by:)"],"anchor":"Amiibo-endpoints"},{"title":"Game endpoints","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getGameCharacters(by:)","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getGameSeries(by:)"],"anchor":"Game-endpoints"},{"title":"System endpoints","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getLastUpdated()"],"anchor":"System-endpoints"}],"seeAlsoSections":[{"title":"Clients","anchor":"Clients","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboLiveClient"],"generated":true}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"kind":"symbol","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"inlineContent":[{"type":"text","text":"Amiibo API"}],"type":"strong"},{"text":" backend service.","type":"text"}],"url":"\/documentation\/amiiboservice","role":"collection","title":"AmiiboService"},"doc://AmiiboService/s8SendableP":{"type":"unresolvable","identifier":"doc:\/\/AmiiboService\/s8SendableP","title":"Swift.Sendable"},"doc://AmiiboService/documentation/AmiiboService/AmiiboClient/getAmiibos(by:)":{"required":true,"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"getAmiibos","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"by"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A6FilterV","text":"AmiiboFilter","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"async","kind":"keyword"},{"kind":"text","text":" "},{"text":"throws","kind":"keyword"},{"kind":"text","text":"("},{"preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"Amiibo","preciseIdentifier":"s:13AmiiboService0A0V"},{"kind":"text","text":"]"}],"url":"\/documentation\/amiiboservice\/amiiboclient\/getamiibos(by:)","role":"symbol","type":"topic","title":"getAmiibos(by:)","abstract":[{"text":"Gets a list of amiibo items based on a given filter.","type":"text"}],"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiibos(by:)"},"https://www.amiiboapi.org":{"type":"link","identifier":"https:\/\/www.amiiboapi.org","title":"Amiibo API","titleInlineContent":[{"text":"Amiibo API","type":"text"}],"url":"https:\/\/www.amiiboapi.org"},"doc://AmiiboService/documentation/AmiiboService/AmiiboLiveClient":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"AmiiboLiveClient","kind":"identifier"}],"url":"\/documentation\Line truncated
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiibos(by:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Gets a list of amiibo items based on a given filter."}],"schemaVersion":{"patch":0,"major":0,"minor":3},"seeAlsoSections":[{"generated":true,"anchor":"Amiibo-endpoints","title":"Amiibo endpoints","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiiboSeries(by:)","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiiboTypes(by:)"]}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getAmiibos","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"filter","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A6FilterV","text":"AmiiboFilter","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter"},{"text":") ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError"},{"text":") -> [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V","text":"Amiibo","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},{"text":"]","kind":"text"}],"platforms":["macOS"]}],"kind":"declarations"},{"parameters":[{"name":"filter","content":[{"inlineContent":[{"type":"text","text":"A filter to remove unwanted items from the result."}],"type":"paragraph"}]}],"kind":"parameters"},{"kind":"content","content":[{"type":"heading","level":2,"text":"Return Value","anchor":"return-value"},{"type":"paragraph","inlineContent":[{"type":"text","text":"A list of filtered amiibo items."}]}]},{"kind":"content","content":[{"type":"heading","level":2,"text":"Discussion","anchor":"discussion"},{"type":"aside","style":"note","name":"Throws","content":[{"inlineContent":[{"type":"text","text":"An "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError","isActive":true},{"type":"text","text":" error in case some issue is encountered while generating the result."}],"type":"paragraph"}]}]}],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient"]]},"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getAmiibos","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A6FilterV","text":"AmiiboFilter","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V","text":"Amiibo","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"roleHeading":"Instance Method","title":"getAmiibos(by:)","externalID":"s:13AmiiboService0A6ClientP10getAmiibos2bySayAA0A0VGAA0A6FilterV_tYaAA0aB5ErrorOYKF","symbolKind":"method","required":true,"role":"symbol","modules":[{"name":"AmiiboService"}]},"sections":[],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiiboclient\/getamiibos(by:)"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboService":{"type":"topic","navigatorTitle":[{"text":"AmiiboService","kind":"identifier"}],"title":"AmiiboService","kind":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"AmiiboService","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboService","url":"\/documentation\/amiiboservice\/amiiboservice","role":"symbol","abstract":[{"text":"A type that implements the service that uses a client to make calls.","type":"text"}]},"doc://AmiiboService/documentation/AmiiboService/AmiiboServiceError":{"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AmiiboServiceError"}],"url":"\/documentation\/amiiboservice\/amiiboserviceerror","role":"symbol","type":"topic","title":"AmiiboServiceError","abstract":[{"type":"text","text":"A representation of all the possible errors that the "},{"isActive":true,"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboService"},{"type":"text","text":" service could throw."}],"kind":"symbol","navigatorTitle":[{"text":"AmiiboLine truncated
@@ -1 +0,0 @@
{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiiboSeries(by:)"},"abstract":[{"text":"Gets a list of amiibo series based on a given filter.","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"seeAlsoSections":[{"title":"Amiibo endpoints","anchor":"Amiibo-endpoints","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiibos(by:)","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiiboTypes(by:)"],"generated":true}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getAmiiboSeries","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"filter","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A12SeriesFilterV","text":"AmiiboSeriesFilter","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboSeriesFilter"},{"text":") ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError"},{"text":") -> [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A6SeriesV","text":"AmiiboSeries","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboSeries"},{"text":"]","kind":"text"}]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"inlineContent":[{"type":"text","text":"A filter to remove unwanted items from the result."}],"type":"paragraph"}],"name":"filter"}]},{"kind":"content","content":[{"level":2,"text":"Return Value","anchor":"return-value","type":"heading"},{"inlineContent":[{"type":"text","text":"A list of filtered amiibo series."}],"type":"paragraph"}]},{"kind":"content","content":[{"level":2,"text":"Discussion","anchor":"discussion","type":"heading"},{"name":"Throws","style":"note","content":[{"inlineContent":[{"type":"text","text":"An "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError","isActive":true},{"type":"text","text":" error in case some issue is encountered while generating the result."}],"type":"paragraph"}],"type":"aside"}]}],"sections":[],"kind":"symbol","metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getAmiiboSeries","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"AmiiboSeriesFilter","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A12SeriesFilterV"},{"text":") ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"text":"AmiiboServiceError","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0aB5ErrorO"},{"text":") -> [","kind":"text"},{"text":"AmiiboSeries","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A6SeriesV"},{"text":"]","kind":"text"}],"roleHeading":"Instance Method","title":"getAmiiboSeries(by:)","externalID":"s:13AmiiboService0A6ClientP03getA6Series2bySayAA0aE0VGAA0aE6FilterV_tYaAA0aB5ErrorOYKF","symbolKind":"method","required":true,"role":"symbol","modules":[{"name":"AmiiboService"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiiboclient\/getamiiboseries(by:)"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboService":{"type":"topic","navigatorTitle":[{"text":"AmiiboService","kind":"identifier"}],"title":"AmiiboService","kind":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"AmiiboService","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboService","url":"\/documentation\/amiiboservice\/amiiboservice","role":"symbol","abstract":[{"text":"A type that implements the service that uses a client to make calls.","type":"text"}]},"doc://AmiiboService/documentation/AmiiboService/AmiiboClient/getAmiiboSeries(by:)":{"required":true,"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getAmiiboSeries","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A12SeriesFilterV","text":"AmiiboSeriesFilter","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kiLine truncated
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"text":" ","kind":"text"},{"text":"getAmiiboTypes","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"kind":"text","text":": "},{"text":"AmiiboTypeFilter","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A10TypeFilterV"},{"kind":"text","text":") "},{"kind":"keyword","text":"async"},{"kind":"text","text":" "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"AmiiboServiceError","preciseIdentifier":"s:13AmiiboService0aB5ErrorO"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","text":"AmiiboType","preciseIdentifier":"s:13AmiiboService0A4TypeV"},{"text":"]","kind":"text"}],"externalID":"s:13AmiiboService0A6ClientP03getA5Types2bySayAA0A4TypeVGAA0aG6FilterV_tYaAA0aB5ErrorOYKF","symbolKind":"method","required":true,"modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Method","title":"getAmiiboTypes(by:)","role":"symbol"},"seeAlsoSections":[{"title":"Amiibo endpoints","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiibos(by:)","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiiboSeries(by:)"],"anchor":"Amiibo-endpoints","generated":true}],"abstract":[{"text":"Gets a list of amiibo types based on a given filter.","type":"text"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getAmiiboTypes(by:)","interfaceLanguage":"swift"},"schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getAmiiboTypes","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"filter","kind":"internalParam"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboTypeFilter","kind":"typeIdentifier","text":"AmiiboTypeFilter","preciseIdentifier":"s:13AmiiboService0A10TypeFilterV"},{"text":") ","kind":"text"},{"kind":"keyword","text":"async"},{"text":" ","kind":"text"},{"kind":"keyword","text":"throws"},{"text":"(","kind":"text"},{"text":"AmiiboServiceError","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0aB5ErrorO"},{"text":") -> [","kind":"text"},{"text":"AmiiboType","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboType","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A4TypeV"},{"text":"]","kind":"text"}]}]},{"parameters":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"A filter to remove unwanted items from the result."}]}],"name":"filter"}],"kind":"parameters"},{"content":[{"type":"heading","anchor":"return-value","level":2,"text":"Return Value"},{"type":"paragraph","inlineContent":[{"type":"text","text":"A list of filtered amiibo types."}]}],"kind":"content"},{"content":[{"type":"heading","anchor":"discussion","level":2,"text":"Discussion"},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"An "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError","isActive":true},{"type":"text","text":" error in case some issue is encountered while generating the result."}]}],"name":"Throws","type":"aside","style":"note"}],"kind":"content"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiiboclient\/getamiibotypes(by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/AmiiboType":{"role":"symbol","navigatorTitle":[{"text":"AmiiboType","kind":"identifier"}],"abstract":[{"text":"A model that represents an amiibo type.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboType","title":"AmiiboType","type":"topic","url":"\/documentation\/amiiboservice\/amiibotype","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"AmiiboType","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/AmiiboClient/getAmiibos(by:)":{"required":true,"fragments":[{"kind":"keyword","text":"func"}Line truncated
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"getGameCharacters"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService19GameCharacterFilterV","text":"GameCharacterFilter"},{"kind":"text","text":") "},{"kind":"keyword","text":"async"},{"kind":"text","text":" "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService13GameCharacterV","text":"GameCharacter"},{"kind":"text","text":"]"}],"externalID":"s:13AmiiboService0A6ClientP17getGameCharacters2bySayAA0E9CharacterVGAA0eH6FilterV_tYaAA0aB5ErrorOYKF","symbolKind":"method","required":true,"modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Method","title":"getGameCharacters(by:)","role":"symbol"},"seeAlsoSections":[{"title":"Game endpoints","anchor":"Game-endpoints","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getGameSeries(by:)"],"generated":true}],"abstract":[{"text":"Gets a list of game characters based on a given filter.","type":"text"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getGameCharacters(by:)","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getGameCharacters","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"filter","kind":"internalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService19GameCharacterFilterV","text":"GameCharacterFilter","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameCharacterFilter"},{"text":") ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError"},{"text":") -> [","kind":"text"},{"preciseIdentifier":"s:13AmiiboService13GameCharacterV","text":"GameCharacter","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameCharacter"},{"text":"]","kind":"text"}]}],"kind":"declarations"},{"parameters":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"A filter to remove unwanted items from the result."}]}],"name":"filter"}],"kind":"parameters"},{"content":[{"anchor":"return-value","text":"Return Value","type":"heading","level":2},{"inlineContent":[{"type":"text","text":"A list of filtered game characters."}],"type":"paragraph"}],"kind":"content"},{"content":[{"anchor":"discussion","text":"Discussion","type":"heading","level":2},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"An "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError","isActive":true},{"type":"text","text":" error in case some issue is encountered while generating the result."}]}],"name":"Throws","type":"aside","style":"note"}],"kind":"content"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiiboclient\/getgamecharacters(by:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboService":{"type":"topic","navigatorTitle":[{"text":"AmiiboService","kind":"identifier"}],"title":"AmiiboService","kind":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"AmiiboService","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboService","url":"\/documentation\/amiiboservice\/amiiboservice","role":"symbol","abstract":[{"text":"A type that implements the service that uses a client to make calls.","type":"text"}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/AmiiboClient/getGameSeries(by:)":{"required":true,"fragLine truncated
@@ -1 +0,0 @@
{"metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"getGameSeries"},{"kind":"text","text":"("},{"kind":"externalParam","text":"by"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService16GameSeriesFilterV","text":"GameSeriesFilter"},{"kind":"text","text":") "},{"kind":"keyword","text":"async"},{"kind":"text","text":" "},{"kind":"keyword","text":"throws"},{"kind":"text","text":"("},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError"},{"kind":"text","text":") -> ["},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService10GameSeriesV","text":"GameSeries"},{"kind":"text","text":"]"}],"externalID":"s:13AmiiboService0A6ClientP13getGameSeries2bySayAA0eF0VGAA0eF6FilterV_tYaAA0aB5ErrorOYKF","symbolKind":"method","required":true,"modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Method","title":"getGameSeries(by:)","role":"symbol"},"seeAlsoSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getGameCharacters(by:)"],"anchor":"Game-endpoints","generated":true,"title":"Game endpoints"}],"abstract":[{"text":"Gets a list of game series based on a given filter.","type":"text"}],"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getGameSeries(by:)","interfaceLanguage":"swift"},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getGameSeries","kind":"identifier"},{"text":"(","kind":"text"},{"text":"by","kind":"externalParam"},{"text":" ","kind":"text"},{"text":"filter","kind":"internalParam"},{"text":": ","kind":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameSeriesFilter","preciseIdentifier":"s:13AmiiboService16GameSeriesFilterV","text":"GameSeriesFilter","kind":"typeIdentifier"},{"text":") ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError","preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier"},{"text":") -> [","kind":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameSeries","preciseIdentifier":"s:13AmiiboService10GameSeriesV","text":"GameSeries","kind":"typeIdentifier"},{"kind":"text","text":"]"}]}]},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"A filter to remove unwanted items from the result."}]}],"name":"filter"}]},{"content":[{"type":"heading","text":"Return Value","anchor":"return-value","level":2},{"type":"paragraph","inlineContent":[{"text":"A list of filtered game series.","type":"text"}]}],"kind":"content"},{"content":[{"type":"heading","text":"Discussion","anchor":"discussion","level":2},{"type":"aside","style":"note","name":"Throws","content":[{"type":"paragraph","inlineContent":[{"text":"An ","type":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError","isActive":true,"type":"reference"},{"type":"text","text":" error in case some issue is encountered while generating the result."}]}]}],"kind":"content"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiiboclient\/getgameseries(by:)"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/GameSeries":{"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameSeries","abstract":[{"text":"A model that represents a game series.","type":"text"}],"url":"\/documentation\/amiiboservice\/gameseries","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"GameSeries","kind":"identifier"}],"kind":"symbol","title":"GameSeries","navigatorTitle":[{"text":"GameSeries","kind":"identifier"}],"role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/AmiiboService":{"type":"topic","navigatorTitle":[{"text":"AmiiboService","kind":"identifier"}],"title":"AmiiboService","kind":"symbol","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"AmiiboService","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboService","url":"\/documentation\/amiiboservice\/amiiboservice","role":"symbol","abstract":[{"text":"A type that implements the service that uses a client to make calls.","type":"text"}]},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everytLine truncated
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient"]]},"abstract":[{"type":"text","text":"Gets the date when the data was last updated."}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getLastUpdated()","interfaceLanguage":"swift"},"metadata":{"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getLastUpdated","kind":"identifier"},{"text":"() ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:10Foundation4DateV","text":"Date","kind":"typeIdentifier"}],"externalID":"s:13AmiiboService0A6ClientP14getLastUpdated10Foundation4DateVyYaAA0aB5ErrorOYKF","symbolKind":"method","required":true,"modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Method","title":"getLastUpdated()","role":"symbol"},"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getLastUpdated","kind":"identifier"},{"text":"() ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:10Foundation4DateV","text":"Date","kind":"typeIdentifier"}]}],"kind":"declarations"},{"content":[{"anchor":"return-value","text":"Return Value","type":"heading","level":2},{"inlineContent":[{"type":"text","text":"A last updated date, decoded as UTC."}],"type":"paragraph"}],"kind":"content"},{"content":[{"anchor":"discussion","text":"Discussion","type":"heading","level":2},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"An "},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError","isActive":true},{"type":"text","text":" error in case some issue is encountered while generating the result."}]}],"name":"Throws","type":"aside","style":"note"}],"kind":"content"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiiboclient\/getlastupdated()"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboServiceError":{"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AmiiboServiceError"}],"url":"\/documentation\/amiiboservice\/amiiboserviceerror","role":"symbol","type":"topic","title":"AmiiboServiceError","abstract":[{"type":"text","text":"A representation of all the possible errors that the "},{"isActive":true,"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboService"},{"type":"text","text":" service could throw."}],"kind":"symbol","navigatorTitle":[{"text":"AmiiboServiceError","kind":"identifier"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboServiceError"},"doc://AmiiboService/documentation/AmiiboService/AmiiboClient/getLastUpdated()":{"required":true,"fragments":[{"text":"func","kind":"keyword"},{"text":" ","kind":"text"},{"text":"getLastUpdated","kind":"identifier"},{"text":"() ","kind":"text"},{"text":"async","kind":"keyword"},{"text":" ","kind":"text"},{"text":"throws","kind":"keyword"},{"text":"(","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0aB5ErrorO","text":"AmiiboServiceError","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:10Foundation4DateV","text":"Date","kind":"typeIdentifier"}],"url":"\/documentation\/amiiboservice\/amiiboclient\/getlastupdated()","role":"symbol","type":"topic","title":"getLastUpdated()","abstract":[{"type":"text","text":"Gets the date when the data was last updated."}],"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboClient\/getLastUpdated()"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/AmiiboClient":{"fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"AmiiboClient","kind":"identifier"}],"url":"Line truncated
@@ -1 +0,0 @@
{"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter"},"abstract":[{"text":"A type that contains values to fine-tune a response when requesting amiibo items.","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"seeAlsoSections":[{"title":"Filters","anchor":"Filters","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboSeriesFilter","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboTypeFilter","doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameCharacterFilter","doc:\/\/AmiiboService\/documentation\/AmiiboService\/GameSeriesFilter"],"generated":true}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"AmiiboFilter","kind":"identifier"}]}],"kind":"declarations"}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService"]]},"metadata":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"AmiiboFilter","kind":"identifier"}],"roleHeading":"Structure","title":"AmiiboFilter","navigatorTitle":[{"text":"AmiiboFilter","kind":"identifier"}],"externalID":"s:13AmiiboService0A6FilterV","symbolKind":"struct","role":"symbol","modules":[{"name":"AmiiboService"}]},"topicSections":[{"title":"Initializers","anchor":"Initializers","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/init(head:tail:identifier:name:type:series:gameCharacter:gameSeries:showGames:showUsage:)"],"generated":true},{"title":"Instance Properties","anchor":"Instance-Properties","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/gameCharacter","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/gameSeries","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/head","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/identifier","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/name","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/series","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/showGames","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/showUsage","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/tail","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/type"],"generated":true}],"relationshipsSections":[{"title":"Conforms To","type":"conformsTo","identifiers":["doc:\/\/AmiiboService\/s8SendableP","doc:\/\/AmiiboService\/s16SendableMetatypeP"],"kind":"relationships"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibofilter"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter/showGames":{"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/showGames","abstract":[{"text":"A flag indicating whether to include games in the response, if any.","type":"text"}],"url":"\/documentation\/amiiboservice\/amiibofilter\/showgames","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"showGames","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"kind":"symbol","title":"showGames","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter/identifier":{"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"identifier","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"?","kind":"text"}],"url":"\/documentation\/amiiboservice\/amiibofilter\/identifier","type":"topic","abstract":[{"type":"text","text":"An amiibo identifier to filter the result, if any."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/identifier","kind":"symbol","title":"identifier","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter/tail":{"role":"symbol","url":"\/documentation\/amiiboservice\/amiibofilter\/tail","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/tail","abstract":[{"text":"A last part of an identifier to filter the result, if any.","type":"text"}],"type":"topic","title":"tail","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"tail"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/GameCharacterFilter":{"role":"symbol","navigatorTitle":[{"kind":"identifier","text":"GameCharacterFilter"}],"abstract":[{"type":"text","text":"A type that contains values to fine-tune a response when requesting game characters."}],"title":"GameCharacLine truncated
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter"]]},"abstract":[{"type":"text","text":"A game character to filter the result, if any."}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/gameCharacter","interfaceLanguage":"swift"},"metadata":{"externalID":"s:13AmiiboService0A6FilterV13gameCharacterSSSgvp","title":"gameCharacter","symbolKind":"property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameCharacter"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"kind":"text","text":"?"}],"roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"role":"symbol"},"sections":[],"schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameCharacter","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":"?"}]}]}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibofilter\/gamecharacter"]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter/gameCharacter":{"role":"symbol","url":"\/documentation\/amiiboservice\/amiibofilter\/gamecharacter","abstract":[{"text":"A game character to filter the result, if any.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/gameCharacter","type":"topic","title":"gameCharacter","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameCharacter","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter":{"role":"symbol","navigatorTitle":[{"text":"AmiiboFilter","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibofilter","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter","title":"AmiiboFilter","abstract":[{"type":"text","text":"A type that contains values to fine-tune a response when requesting amiibo items."}],"type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AmiiboFilter","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"}}}
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter"]]},"abstract":[{"text":"A game series to filter the result, if any.","type":"text"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/gameSeries","interfaceLanguage":"swift"},"metadata":{"symbolKind":"property","title":"gameSeries","externalID":"s:13AmiiboService0A6FilterV10gameSeriesSSSgvp","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameSeries"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":"?"}],"roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"role":"symbol"},"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameSeries","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"?","kind":"text"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibofilter\/gameseries"]}],"kind":"symbol","references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter/gameSeries":{"role":"symbol","url":"\/documentation\/amiiboservice\/amiibofilter\/gameseries","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/gameSeries","title":"gameSeries","abstract":[{"type":"text","text":"A game series to filter the result, if any."}],"type":"topic","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameSeries","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"text":"?","kind":"text"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter":{"role":"symbol","navigatorTitle":[{"text":"AmiiboFilter","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibofilter","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter","title":"AmiiboFilter","abstract":[{"type":"text","text":"A type that contains values to fine-tune a response when requesting amiibo items."}],"type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AmiiboFilter","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"}}}
@@ -1 +0,0 @@
{"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"head","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"]}]}],"abstract":[{"type":"text","text":"A first part of an identifier to filter the result, if any."}],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/head","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter"]]},"metadata":{"title":"head","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A6FilterV4headSSSgvp","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"head","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibofilter\/head"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter":{"role":"symbol","navigatorTitle":[{"text":"AmiiboFilter","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibofilter","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter","title":"AmiiboFilter","abstract":[{"type":"text","text":"A type that contains values to fine-tune a response when requesting amiibo items."}],"type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AmiiboFilter","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter/head":{"type":"topic","abstract":[{"type":"text","text":"A first part of an identifier to filter the result, if any."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/head","url":"\/documentation\/amiiboservice\/amiibofilter\/head","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"head","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?"}],"kind":"symbol","title":"head","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"}}}
@@ -1 +0,0 @@
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/identifier","interfaceLanguage":"swift"},"abstract":[{"text":"An amiibo identifier to filter the result, if any.","type":"text"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"identifier","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter"]]},"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"identifier"},{"kind":"text","text":": "},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"?","kind":"text"}],"roleHeading":"Instance Property","title":"identifier","externalID":"s:13AmiiboService0A6FilterV10identifierSSSgvp","symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibofilter\/identifier"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","title":"AmiiboService","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter":{"role":"symbol","navigatorTitle":[{"text":"AmiiboFilter","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibofilter","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter","title":"AmiiboFilter","abstract":[{"type":"text","text":"A type that contains values to fine-tune a response when requesting amiibo items."}],"type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AmiiboFilter","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter/identifier":{"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"identifier","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"?","kind":"text"}],"url":"\/documentation\/amiiboservice\/amiibofilter\/identifier","type":"topic","abstract":[{"type":"text","text":"An amiibo identifier to filter the result, if any."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/identifier","kind":"symbol","title":"identifier","role":"symbol"}}}
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter"]]},"abstract":[{"text":"Initializes this filter.","type":"text"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/init(head:tail:identifier:name:type:series:gameCharacter:gameSeries:showGames:showUsage:)","interfaceLanguage":"swift"},"metadata":{"externalID":"s:13AmiiboService0A6FilterV4head4tail10identifier4name4type6series13gameCharacter0J6Series9showGames0M5UsageACSSSg_A7NSbSgAOtcfc","symbolKind":"init","title":"init(head:tail:identifier:name:type:series:gameCharacter:gameSeries:showGames:showUsage:)","fragments":[{"text":"init","kind":"identifier"},{"text":"(","kind":"text"},{"kind":"externalParam","text":"head"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"text":"tail","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"text":"identifier","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"text":"name","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"?, ","kind":"text"},{"text":"type","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"series"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"gameCharacter"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"gameSeries"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"?, "},{"kind":"externalParam","text":"showGames"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","kind":"typeIdentifier","text":"Bool"},{"kind":"text","text":"?, "},{"text":"showUsage","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":"?)","kind":"text"}],"roleHeading":"Initializer","modules":[{"name":"AmiiboService"}],"role":"symbol"},"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"init"},{"kind":"text","text":"("},{"kind":"externalParam","text":"head"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"? = nil, "},{"kind":"externalParam","text":"tail"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"? = nil, "},{"kind":"externalParam","text":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"? = nil, ","kind":"text"},{"text":"name","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"? = nil, ","kind":"text"},{"text":"type","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"? = nil, ","kind":"text"},{"text":"series","kind":"externalParam"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"},{"kind":"text","text":"? = nil, "},{"text":"gameCharacter","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"? = nil, ","kind":"text"},{"text":"gameSeries","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"text":"? = nil, ","kind":"text"},{"text":"showGames","kind":"externalParam"},{"text":": ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"},{"text":"? = nil, ","kind":"text"},{"text":"showUsage","kind":"externalParam"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"},{"text":"? = nil)","kind":"text"}]}]},{"parameters":[{"content":[{"type":"paragraph","inlineContent":[{"text":"A first part of an identifier to filter the result, if any.","type":"text"}]}],"name":"head"},{"content":[{"type":"paragraph","inlineContent":[{"text":"A last part of an identifier to filter the result, if any.","type":"text"}]}],"name":"tail"},{"content":[{"type":"paragraph","inlineContent":[{"text":"An amiibo identifier to filter the result, if any.","type":"text"}]}],"name":"identifier"},{"content":[{"tLine truncated
@@ -1 +0,0 @@
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter"]]},"schemaVersion":{"minor":3,"major":0,"patch":0},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibofilter\/name"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":"?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"metadata":{"title":"name","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A6FilterV4nameSSSgvp","symbolKind":"property","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":"?","kind":"text"}]},"kind":"symbol","sections":[],"abstract":[{"type":"text","text":"An amiibo name to filter the result, if any."}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/name"},"references":{"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter/name":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter\/name","abstract":[{"type":"text","text":"An amiibo name to filter the result, if any."}],"type":"topic","url":"\/documentation\/amiiboservice\/amiibofilter\/name","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"text":"?","kind":"text"}],"kind":"symbol","title":"name","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"url":"\/documentation\/amiiboservice","role":"collection","title":"AmiiboService","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interact with the "},{"type":"strong","inlineContent":[{"text":"Amiibo API","type":"text"}]},{"type":"text","text":" backend service."}],"kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/AmiiboFilter":{"role":"symbol","navigatorTitle":[{"text":"AmiiboFilter","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibofilter","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/AmiiboFilter","title":"AmiiboFilter","abstract":[{"type":"text","text":"A type that contains values to fine-tune a response when requesting amiibo items."}],"type":"topic","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"AmiiboFilter","kind":"identifier"}],"kind":"symbol"}}}
Loaded 100 of 366 files, more files were not shown because too many files have changed in this diff. Show more