Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1488aa151e | |||
| 2442ada4b6 | |||
| b8c0878ca3 | |||
| 61695af072 | |||
| 7e7e194abc | |||
| 2b01ec14bf | |||
| fae4b44698 | |||
| 0d9c9e22a4 | |||
| 4623c13c24 | |||
| 34627840db | |||
| 40afefed15 | |||
| c303e1f8f3 | |||
| 463d15975c | |||
| 8760ff6e12 | |||
| bc0ae63719 | |||
| 3d923982b1 |
@@ -1,9 +1,23 @@
|
||||
## ===----------------------------------------------------------------------===
|
||||
##
|
||||
## 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
|
||||
##
|
||||
## ===----------------------------------------------------------------------===
|
||||
|
||||
# --- DOCUMENTATION ---
|
||||
|
||||
DOCC_ARCHIVE_OUTPUT=./${SPM_LIBRARY_TARGET}.doccarchive
|
||||
DOCC_GITHUB_OUTPUT=./docs
|
||||
DOCC_GITHUB_BASE_PATH=amiibo-service
|
||||
DOCC_PREVIEW_URL=http://localhost:8080/documentation/amiiboservice
|
||||
DOCC_XCODE_OUTPUT=./${SPM_LIBRARY_TARGET}.doccarchive
|
||||
|
||||
# -- SWIFT PACKAGE MANAGER ---
|
||||
|
||||
|
||||
+14
@@ -1,3 +1,17 @@
|
||||
## ===----------------------------------------------------------------------===
|
||||
##
|
||||
## 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
|
||||
##
|
||||
## ===----------------------------------------------------------------------===
|
||||
|
||||
# Mac OS
|
||||
.DS_Store
|
||||
.netrc
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
## ===----------------------------------------------------------------------===
|
||||
##
|
||||
## 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
|
||||
##
|
||||
## ===----------------------------------------------------------------------===
|
||||
|
||||
version: 1
|
||||
external_links:
|
||||
documentation: "https://rock-n-code.github.io/amiibo-service/documentation/amiiboservice/"
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
For the purpose of tracking copyright, this is the list of individuals and
|
||||
organizations who have contributed source code to this Swift package.
|
||||
organizations who have contributed source code to amiibo-service.
|
||||
|
||||
For employees of an organization/company where the copyright of work done
|
||||
by employees of that company is held by the company itself, only the company
|
||||
|
||||
@@ -1,287 +1,201 @@
|
||||
EUROPEAN UNION PUBLIC LICENCE v. 1.2
|
||||
EUPL © the European Union 2007, 2016
|
||||
|
||||
This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined
|
||||
below) which is provided under the terms of this Licence. Any use of the Work,
|
||||
other than as authorised under this Licence is prohibited (to the extent such
|
||||
use is covered by a right of the copyright holder of the Work).
|
||||
|
||||
The Work is provided under the terms of this Licence when the Licensor (as
|
||||
defined below) has placed the following notice immediately following the
|
||||
copyright notice for the Work:
|
||||
|
||||
Licensed under the EUPL
|
||||
|
||||
or has expressed by any other means his willingness to license under the EUPL.
|
||||
|
||||
1. Definitions
|
||||
|
||||
In this Licence, the following terms have the following meaning:
|
||||
|
||||
- ‘The Licence’: this Licence.
|
||||
|
||||
- ‘The Original Work’: the work or software distributed or communicated by the
|
||||
Licensor under this Licence, available as Source Code and also as Executable
|
||||
Code as the case may be.
|
||||
|
||||
- ‘Derivative Works’: the works or software that could be created by the
|
||||
Licensee, based upon the Original Work or modifications thereof. This Licence
|
||||
does not define the extent of modification or dependence on the Original Work
|
||||
required in order to classify a work as a Derivative Work; this extent is
|
||||
determined by copyright law applicable in the country mentioned in Article 15.
|
||||
|
||||
- ‘The Work’: the Original Work or its Derivative Works.
|
||||
|
||||
- ‘The Source Code’: the human-readable form of the Work which is the most
|
||||
convenient for people to study and modify.
|
||||
|
||||
- ‘The Executable Code’: any code which has generally been compiled and which is
|
||||
meant to be interpreted by a computer as a program.
|
||||
|
||||
- ‘The Licensor’: the natural or legal person that distributes or communicates
|
||||
the Work under the Licence.
|
||||
|
||||
- ‘Contributor(s)’: any natural or legal person who modifies the Work under the
|
||||
Licence, or otherwise contributes to the creation of a Derivative Work.
|
||||
|
||||
- ‘The Licensee’ or ‘You’: any natural or legal person who makes any usage of
|
||||
the Work under the terms of the Licence.
|
||||
|
||||
- ‘Distribution’ or ‘Communication’: any act of selling, giving, lending,
|
||||
renting, distributing, communicating, transmitting, or otherwise making
|
||||
available, online or offline, copies of the Work or providing access to its
|
||||
essential functionalities at the disposal of any other natural or legal
|
||||
person.
|
||||
|
||||
2. Scope of the rights granted by the Licence
|
||||
|
||||
The Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
|
||||
sublicensable licence to do the following, for the duration of copyright vested
|
||||
in the Original Work:
|
||||
|
||||
- use the Work in any circumstance and for all usage,
|
||||
- reproduce the Work,
|
||||
- modify the Work, and make Derivative Works based upon the Work,
|
||||
- communicate to the public, including the right to make available or display
|
||||
the Work or copies thereof to the public and perform publicly, as the case may
|
||||
be, the Work,
|
||||
- distribute the Work or copies thereof,
|
||||
- lend and rent the Work or copies thereof,
|
||||
- sublicense rights in the Work or copies thereof.
|
||||
|
||||
Those rights can be exercised on any media, supports and formats, whether now
|
||||
known or later invented, as far as the applicable law permits so.
|
||||
|
||||
In the countries where moral rights apply, the Licensor waives his right to
|
||||
exercise his moral right to the extent allowed by law in order to make effective
|
||||
the licence of the economic rights here above listed.
|
||||
|
||||
The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to
|
||||
any patents held by the Licensor, to the extent necessary to make use of the
|
||||
rights granted on the Work under this Licence.
|
||||
|
||||
3. Communication of the Source Code
|
||||
|
||||
The Licensor may provide the Work either in its Source Code form, or as
|
||||
Executable Code. If the Work is provided as Executable Code, the Licensor
|
||||
provides in addition a machine-readable copy of the Source Code of the Work
|
||||
along with each copy of the Work that the Licensor distributes or indicates, in
|
||||
a notice following the copyright notice attached to the Work, a repository where
|
||||
the Source Code is easily and freely accessible for as long as the Licensor
|
||||
continues to distribute or communicate the Work.
|
||||
|
||||
4. Limitations on copyright
|
||||
|
||||
Nothing in this Licence is intended to deprive the Licensee of the benefits from
|
||||
any exception or limitation to the exclusive rights of the rights owners in the
|
||||
Work, of the exhaustion of those rights or of other applicable limitations
|
||||
thereto.
|
||||
|
||||
5. Obligations of the Licensee
|
||||
|
||||
The grant of the rights mentioned above is subject to some restrictions and
|
||||
obligations imposed on the Licensee. Those obligations are the following:
|
||||
|
||||
Attribution right: The Licensee shall keep intact all copyright, patent or
|
||||
trademarks notices and all notices that refer to the Licence and to the
|
||||
disclaimer of warranties. The Licensee must include a copy of such notices and a
|
||||
copy of the Licence with every copy of the Work he/she distributes or
|
||||
communicates. The Licensee must cause any Derivative Work to carry prominent
|
||||
notices stating that the Work has been modified and the date of modification.
|
||||
|
||||
Copyleft clause: If the Licensee distributes or communicates copies of the
|
||||
Original Works or Derivative Works, this Distribution or Communication will be
|
||||
done under the terms of this Licence or of a later version of this Licence
|
||||
unless the Original Work is expressly distributed only under this version of the
|
||||
Licence — for example by communicating ‘EUPL v. 1.2 only’. The Licensee
|
||||
(becoming Licensor) cannot offer or impose any additional terms or conditions on
|
||||
the Work or Derivative Work that alter or restrict the terms of the Licence.
|
||||
|
||||
Compatibility clause: If the Licensee Distributes or Communicates Derivative
|
||||
Works or copies thereof based upon both the Work and another work licensed under
|
||||
a Compatible Licence, this Distribution or Communication can be done under the
|
||||
terms of this Compatible Licence. For the sake of this clause, ‘Compatible
|
||||
Licence’ refers to the licences listed in the appendix attached to this Licence.
|
||||
Should the Licensee's obligations under the Compatible Licence conflict with
|
||||
his/her obligations under this Licence, the obligations of the Compatible
|
||||
Licence shall prevail.
|
||||
|
||||
Provision of Source Code: When distributing or communicating copies of the Work,
|
||||
the Licensee will provide a machine-readable copy of the Source Code or indicate
|
||||
a repository where this Source will be easily and freely available for as long
|
||||
as the Licensee continues to distribute or communicate the Work.
|
||||
|
||||
Legal Protection: This Licence does not grant permission to use the trade names,
|
||||
trademarks, service marks, or names of the Licensor, except as required for
|
||||
reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the copyright notice.
|
||||
|
||||
6. Chain of Authorship
|
||||
|
||||
The original Licensor warrants that the copyright in the Original Work granted
|
||||
hereunder is owned by him/her or licensed to him/her and that he/she has the
|
||||
power and authority to grant the Licence.
|
||||
|
||||
Each Contributor warrants that the copyright in the modifications he/she brings
|
||||
to the Work are owned by him/her or licensed to him/her and that he/she has the
|
||||
power and authority to grant the Licence.
|
||||
|
||||
Each time You accept the Licence, the original Licensor and subsequent
|
||||
Contributors grant You a licence to their contributions to the Work, under the
|
||||
terms of this Licence.
|
||||
|
||||
7. Disclaimer of Warranty
|
||||
|
||||
The Work is a work in progress, which is continuously improved by numerous
|
||||
Contributors. It is not a finished work and may therefore contain defects or
|
||||
‘bugs’ inherent to this type of development.
|
||||
|
||||
For the above reason, the Work is provided under the Licence on an ‘as is’ basis
|
||||
and without warranties of any kind concerning the Work, including without
|
||||
limitation merchantability, fitness for a particular purpose, absence of defects
|
||||
or errors, accuracy, non-infringement of intellectual property rights other than
|
||||
copyright as stated in Article 6 of this Licence.
|
||||
|
||||
This disclaimer of warranty is an essential part of the Licence and a condition
|
||||
for the grant of any rights to the Work.
|
||||
|
||||
8. Disclaimer of Liability
|
||||
|
||||
Except in the cases of wilful misconduct or damages directly caused to natural
|
||||
persons, the Licensor will in no event be liable for any direct or indirect,
|
||||
material or moral, damages of any kind, arising out of the Licence or of the use
|
||||
of the Work, including without limitation, damages for loss of goodwill, work
|
||||
stoppage, computer failure or malfunction, loss of data or any commercial
|
||||
damage, even if the Licensor has been advised of the possibility of such damage.
|
||||
However, the Licensor will be liable under statutory product liability laws as
|
||||
far such laws apply to the Work.
|
||||
|
||||
9. Additional agreements
|
||||
|
||||
While distributing the Work, You may choose to conclude an additional agreement,
|
||||
defining obligations or services consistent with this Licence. However, if
|
||||
accepting obligations, You may act only on your own behalf and on your sole
|
||||
responsibility, not on behalf of the original Licensor or any other Contributor,
|
||||
and only if You agree to indemnify, defend, and hold each Contributor harmless
|
||||
for any liability incurred by, or claims asserted against such Contributor by
|
||||
the fact You have accepted any warranty or additional liability.
|
||||
|
||||
10. Acceptance of the Licence
|
||||
|
||||
The provisions of this Licence can be accepted by clicking on an icon ‘I agree’
|
||||
placed under the bottom of a window displaying the text of this Licence or by
|
||||
affirming consent in any other similar way, in accordance with the rules of
|
||||
applicable law. Clicking on that icon indicates your clear and irrevocable
|
||||
acceptance of this Licence and all of its terms and conditions.
|
||||
|
||||
Similarly, you irrevocably accept this Licence and all of its terms and
|
||||
conditions by exercising any rights granted to You by Article 2 of this Licence,
|
||||
such as the use of the Work, the creation by You of a Derivative Work or the
|
||||
Distribution or Communication by You of the Work or copies thereof.
|
||||
|
||||
11. Information to the public
|
||||
|
||||
In case of any Distribution or Communication of the Work by means of electronic
|
||||
communication by You (for example, by offering to download the Work from a
|
||||
remote location) the distribution channel or media (for example, a website) must
|
||||
at least provide to the public the information requested by the applicable law
|
||||
regarding the Licensor, the Licence and the way it may be accessible, concluded,
|
||||
stored and reproduced by the Licensee.
|
||||
|
||||
12. Termination of the Licence
|
||||
|
||||
The Licence and the rights granted hereunder will terminate automatically upon
|
||||
any breach by the Licensee of the terms of the Licence.
|
||||
|
||||
Such a termination will not terminate the licences of any person who has
|
||||
received the Work from the Licensee under the Licence, provided such persons
|
||||
remain in full compliance with the Licence.
|
||||
|
||||
13. Miscellaneous
|
||||
|
||||
Without prejudice of Article 9 above, the Licence represents the complete
|
||||
agreement between the Parties as to the Work.
|
||||
|
||||
If any provision of the Licence is invalid or unenforceable under applicable
|
||||
law, this will not affect the validity or enforceability of the Licence as a
|
||||
whole. Such provision will be construed or reformed so as necessary to make it
|
||||
valid and enforceable.
|
||||
|
||||
The European Commission may publish other linguistic versions or new versions of
|
||||
this Licence or updated versions of the Appendix, so far this is required and
|
||||
reasonable, without reducing the scope of the rights granted by the Licence. New
|
||||
versions of the Licence will be published with a unique version number.
|
||||
|
||||
All linguistic versions of this Licence, approved by the European Commission,
|
||||
have identical value. Parties can take advantage of the linguistic version of
|
||||
their choice.
|
||||
|
||||
14. Jurisdiction
|
||||
|
||||
Without prejudice to specific agreement between parties,
|
||||
|
||||
- any litigation resulting from the interpretation of this License, arising
|
||||
between the European Union institutions, bodies, offices or agencies, as a
|
||||
Licensor, and any Licensee, will be subject to the jurisdiction of the Court
|
||||
of Justice of the European Union, as laid down in article 272 of the Treaty on
|
||||
the Functioning of the European Union,
|
||||
|
||||
- any litigation arising between other parties and resulting from the
|
||||
interpretation of this License, will be subject to the exclusive jurisdiction
|
||||
of the competent court where the Licensor resides or conducts its primary
|
||||
business.
|
||||
|
||||
15. Applicable Law
|
||||
|
||||
Without prejudice to specific agreement between parties,
|
||||
|
||||
- this Licence shall be governed by the law of the European Union Member State
|
||||
where the Licensor has his seat, resides or has his registered office,
|
||||
|
||||
- this licence shall be governed by Belgian law if the Licensor has no seat,
|
||||
residence or registered office inside a European Union Member State.
|
||||
|
||||
Appendix
|
||||
|
||||
‘Compatible Licences’ according to Article 5 EUPL are:
|
||||
|
||||
- GNU General Public License (GPL) v. 2, v. 3
|
||||
- GNU Affero General Public License (AGPL) v. 3
|
||||
- Open Software License (OSL) v. 2.1, v. 3.0
|
||||
- Eclipse Public License (EPL) v. 1.0
|
||||
- CeCILL v. 2.0, v. 2.1
|
||||
- Mozilla Public Licence (MPL) v. 2
|
||||
- GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
|
||||
- Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for
|
||||
works other than software
|
||||
- European Union Public Licence (EUPL) v. 1.1, v. 1.2
|
||||
- Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong
|
||||
Reciprocity (LiLiQ-R+).
|
||||
|
||||
The European Commission may update this Appendix to later versions of the above
|
||||
licences without producing a new version of the EUPL, as long as they provide
|
||||
the rights granted in Article 2 of this Licence and protect the covered Source
|
||||
Code from exclusive appropriation.
|
||||
|
||||
All other changes or additions to this Appendix require the production of a new
|
||||
EUPL version.
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -1,14 +1,16 @@
|
||||
# ===----------------------------------------------------------------------===
|
||||
#
|
||||
# This source file is part of the AmiiboService open source project
|
||||
#
|
||||
# Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
# Licensed under the EUPL 1.2 or later.
|
||||
#
|
||||
# See LICENSE for license information
|
||||
# See CONTRIBUTORS for the list of AmiiboAPI project authors
|
||||
#
|
||||
# ===----------------------------------------------------------------------===
|
||||
## ===----------------------------------------------------------------------===
|
||||
##
|
||||
## 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
|
||||
##
|
||||
## ===----------------------------------------------------------------------===
|
||||
|
||||
# ENVIRONMENT VARIABLES
|
||||
|
||||
@@ -19,10 +21,13 @@ export $(shell sed 's/=.*//' $(environment))
|
||||
|
||||
# LIBRARY
|
||||
|
||||
lib-build: ## Builds the project locally
|
||||
lib-build: ## Builds the library
|
||||
@swift build
|
||||
|
||||
lib-test: ## Runs the tests of the library
|
||||
lib-release: ## Releases the library
|
||||
@swift build -c release
|
||||
|
||||
lib-test: ## Runs the unit tests for the library
|
||||
@swift test \
|
||||
--disable-xctest \
|
||||
--enable-code-coverage \
|
||||
@@ -38,8 +43,8 @@ pkg-reset: ## Resets the complete SPM cache/build folder of the package
|
||||
@swift package reset
|
||||
|
||||
pkg-pristine: pkg-clean pkg-reset ## Deletes all built artifacts, caches, and documentations of the package
|
||||
@rm -drf $(DOCC_ARCHIVE_OUTPUT)
|
||||
@rm -drf $(DOCC_GITHUB_OUTPUT)
|
||||
@rm -drf $(DOCC_XCODE_OUTPUT)
|
||||
|
||||
pkg-outdated: ## Lists the SPM package dependencies that can be updated
|
||||
@swift package update --dry-run
|
||||
@@ -49,7 +54,16 @@ pkg-update: ## Updates the SPM package dependencies
|
||||
|
||||
# DOCUMENTATION
|
||||
|
||||
doc-generate: doc-generate-xcode doc-generate-github ## Generates the library documentation for both Github and Xcode
|
||||
doc-generate: doc-generate-archive doc-generate-github ## Generates the library documentation for both Github and Xcode
|
||||
|
||||
doc-generate-archive: ## Generates the library documentation archive for Xcode
|
||||
@swift package \
|
||||
--allow-writing-to-directory $(DOCC_ARCHIVE_OUTPUT) \
|
||||
generate-documentation \
|
||||
--target $(SPM_LIBRARY_TARGET) \
|
||||
--include-extended-types \
|
||||
--enable-inherited-docs \
|
||||
--output-path $(DOCC_ARCHIVE_OUTPUT)
|
||||
|
||||
doc-generate-github: ## Generates the library documentation for Github
|
||||
@swift package \
|
||||
@@ -58,22 +72,19 @@ doc-generate-github: ## Generates the library documentation for Github
|
||||
--target $(SPM_LIBRARY_TARGET) \
|
||||
--disable-indexing \
|
||||
--transform-for-static-hosting \
|
||||
--include-extended-types \
|
||||
--enable-inherited-docs \
|
||||
--hosting-base-path $(DOCC_GITHUB_BASE_PATH) \
|
||||
--output-path $(DOCC_GITHUB_OUTPUT)
|
||||
|
||||
doc-generate-xcode: ## Generates the library documentation for Xcode
|
||||
@swift package \
|
||||
--allow-writing-to-directory $(DOCC_XCODE_OUTPUT) \
|
||||
generate-documentation \
|
||||
--target $(SPM_LIBRARY_TARGET) \
|
||||
--output-path $(DOCC_XCODE_OUTPUT)
|
||||
|
||||
doc-preview: ## Previews the library documentation in Safari
|
||||
@open -a safari $(DOCC_PREVIEW_URL)
|
||||
@swift package \
|
||||
--disable-sandbox \
|
||||
preview-documentation \
|
||||
--target $(SPM_LIBRARY_TARGET)
|
||||
--target $(SPM_LIBRARY_TARGET) \
|
||||
--include-extended-types \
|
||||
--enable-inherited-docs
|
||||
|
||||
# IDE
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
Amiibo Service Project
|
||||
======================
|
||||
|
||||
Please visit the Amiibo Service web site for more information:
|
||||
|
||||
* https://github.com/rock-n-code/amiibo-service
|
||||
|
||||
Copyright 2026 Röck+Cöde VoF
|
||||
|
||||
The Amiibo Service Project licenses this file to you under the Apache License,
|
||||
version 2.0 (the "License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at:
|
||||
|
||||
https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
License for the specific language governing permissions and limitations
|
||||
under the License.
|
||||
+13
-11
@@ -1,16 +1,18 @@
|
||||
// swift-tools-version: 5.9
|
||||
// swift-tools-version: 5.10
|
||||
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
import PackageDescription
|
||||
|
||||
@@ -30,7 +32,7 @@ let package = Package(
|
||||
)
|
||||
],
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/apple/swift-openapi-generator.git", from: "1.3.0"),
|
||||
.package(url: "https://github.com/apple/swift-openapi-generator.git", exact: "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/swiftlang/swift-docc-plugin", from: "1.1.0"),
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
[](https://swiftpackageindex.com/rock-n-code/amiibo-service)
|
||||
[](https://swiftpackageindex.com/rock-n-code/amiibo-service)
|
||||
|
||||
# Amiibo Service
|
||||
|
||||
A library written entirely with [Swift](https://www.swift.org) that provides everything the developer needs to interacts with the [Amiibo API](https://www.amiiboapi.com) backend 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.
|
||||
|
||||
## Installation
|
||||
|
||||
To use this library with your package, then add it as a dependency in the `Package.swift` file:
|
||||
To use this library, add it as a dependency in the `Package.swift` file:
|
||||
|
||||
```swift
|
||||
let package = Package(
|
||||
// name, platforms, products, etc.
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/rock-n-code/amiibo-service", from: "1.0.0"),
|
||||
.package(url: "https://github.com/rock-n-code/amiibo-service", from: "1.4.1"),
|
||||
// other dependencies
|
||||
],
|
||||
targets: [
|
||||
@@ -25,10 +28,82 @@ let package = Package(
|
||||
)
|
||||
```
|
||||
|
||||
It is also possible to use this library with your app in Xcode, then add it as a dependency in your Xcode project.
|
||||
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 5.9 or higher is required in order to compile this library.
|
||||
> [!IMPORTANT]
|
||||
> Swift 5.10 or higher is required in order to build this library.
|
||||
|
||||
## Usage
|
||||
|
||||
```swift
|
||||
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()
|
||||
```
|
||||
|
||||
## 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`:
|
||||
|
||||
```swift
|
||||
import OpenAPIURLSession
|
||||
|
||||
let configuration = URLSessionConfiguration.default
|
||||
|
||||
configuration.urlCache = URLCache(
|
||||
memoryCapacity: 5_000_000,
|
||||
diskCapacity: 50_000_000
|
||||
)
|
||||
|
||||
let transport = URLSessionTransport(
|
||||
configuration: .init(
|
||||
session: URLSession(configuration: configuration)
|
||||
)
|
||||
)
|
||||
|
||||
let service = AmiiboService(
|
||||
client: AmiiboLiveClient(transport: transport)
|
||||
)
|
||||
```
|
||||
|
||||
## 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:
|
||||
|
||||
```swift
|
||||
import AmiiboService
|
||||
|
||||
struct MyMockClient: AmiiboClient {
|
||||
var error: AmiiboServiceError?
|
||||
|
||||
func getAmiibos(
|
||||
by filter: AmiiboFilter
|
||||
) async throws(AmiiboServiceError) -> [Amiibo] {
|
||||
if let error { throw error }
|
||||
return []
|
||||
}
|
||||
|
||||
// Implement remaining protocol requirements...
|
||||
}
|
||||
|
||||
let service = AmiiboService(client: MyMockClient())
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
Please refer to the [online documentation](https://rock-n-code.github.io/amiibo-service/documentation/amiiboservice/) for further informations about this library.
|
||||
Please refer to the [online documentation](https://rock-n-code.github.io/amiibo-service/documentation/amiiboservice/) for further information about this library.
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
# ``Amiibo``
|
||||
|
||||
## Topics
|
||||
|
||||
### Nested Models
|
||||
|
||||
- ``Amiibo/Game``
|
||||
- ``Amiibo/Platform``
|
||||
- ``Amiibo/Release``
|
||||
- ``Amiibo/Usage``
|
||||
@@ -0,0 +1,18 @@
|
||||
# ``AmiiboClient``
|
||||
|
||||
## Topics
|
||||
|
||||
### Amiibo endpoints
|
||||
|
||||
- ``AmiiboClient/getAmiibos(by:)``
|
||||
- ``AmiiboClient/getAmiiboSeries(by:)``
|
||||
- ``AmiiboClient/getAmiiboTypes(by:)``
|
||||
|
||||
### Game endpoints
|
||||
|
||||
- ``AmiiboClient/getGameCharacters(by:)``
|
||||
- ``AmiiboClient/getGameSeries(by:)``
|
||||
|
||||
### System endpoints
|
||||
|
||||
- ``AmiiboClient/getLastUpdated()``
|
||||
@@ -0,0 +1,22 @@
|
||||
# ``AmiiboLiveClient``
|
||||
|
||||
## Topics
|
||||
|
||||
### Initializers
|
||||
|
||||
- ``AmiiboLiveClient/init(transport:)``
|
||||
|
||||
### Amiibo endpoints
|
||||
|
||||
- ``AmiiboLiveClient/getAmiibos(by:)``
|
||||
- ``AmiiboLiveClient/getAmiiboSeries(by:)``
|
||||
- ``AmiiboLiveClient/getAmiiboTypes(by:)``
|
||||
|
||||
### Game endpoints
|
||||
|
||||
- ``AmiiboLiveClient/getGameCharacters(by:)``
|
||||
- ``AmiiboLiveClient/getGameSeries(by:)``
|
||||
|
||||
### System endpoints
|
||||
|
||||
- ``AmiiboLiveClient/getLastUpdated()``
|
||||
@@ -0,0 +1,19 @@
|
||||
# ``AmiiboServiceError``
|
||||
|
||||
## Topics
|
||||
|
||||
### Request errors
|
||||
|
||||
- ``AmiiboServiceError/badRequest``
|
||||
- ``AmiiboServiceError/cancelled``
|
||||
|
||||
### Response errors
|
||||
|
||||
- ``AmiiboServiceError/decoding``
|
||||
- ``AmiiboServiceError/notFound``
|
||||
|
||||
### Service errors
|
||||
|
||||
- ``AmiiboServiceError/notAvailable``
|
||||
- ``AmiiboServiceError/undocumented(_:)``
|
||||
- ``AmiiboServiceError/unknown``
|
||||
@@ -1,10 +1,10 @@
|
||||
# ``AmiiboService``
|
||||
|
||||
A library that provides everything the developer needs to interacts with the **Amiibo API** backend service.
|
||||
A library that provides everything the developer needs to interact with the **Amiibo API** backend service.
|
||||
|
||||
## Overview
|
||||
|
||||
The `AmiiboService` library is a Swift Package Manager package dependency aims at allowing the developer to interact with the [Amiibo API](https://www.amiiboapi.com) backend service seamlessly, by not only providing the *service* type but also any possible *clients*, *models*, *filters* and *errors* types that might be needed during implementation.
|
||||
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.
|
||||
|
||||
## Design
|
||||
|
||||
@@ -18,7 +18,7 @@ To use the `AmiiboService` library with your package, then add it as a dependenc
|
||||
let package = Package(
|
||||
// name, platforms, products, etc.
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/rock-n-code/amiibo-service", from: "1.0.0"),
|
||||
.package(url: "https://github.com/rock-n-code/amiibo-service", from: "1.4.1"),
|
||||
// other dependencies
|
||||
],
|
||||
targets: [
|
||||
@@ -35,11 +35,73 @@ let package = Package(
|
||||
|
||||
It is also possible to use the `AmiiboService` library with your app in Xcode, then add it as a dependency in your Xcode project.
|
||||
|
||||
> important: Swift 5.9 or higher is required in order to compile this library.
|
||||
> important: Swift 5.10 or higher is required in order to compile this library.
|
||||
|
||||
## 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``:
|
||||
|
||||
```swift
|
||||
import OpenAPIURLSession
|
||||
|
||||
let configuration = URLSessionConfiguration.default
|
||||
|
||||
configuration.urlCache = URLCache(
|
||||
memoryCapacity: 5_000_000,
|
||||
diskCapacity: 50_000_000
|
||||
)
|
||||
|
||||
let transport = URLSessionTransport(
|
||||
configuration: .init(
|
||||
session: URLSession(configuration: configuration)
|
||||
)
|
||||
)
|
||||
|
||||
let service = AmiiboService(
|
||||
client: AmiiboLiveClient(transport: transport)
|
||||
)
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
## 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:
|
||||
|
||||
```swift
|
||||
import AmiiboService
|
||||
|
||||
struct MyMockClient: AmiiboClient {
|
||||
var error: AmiiboServiceError?
|
||||
|
||||
func getAmiibos(
|
||||
by filter: AmiiboFilter
|
||||
) async throws(AmiiboServiceError) -> [Amiibo] {
|
||||
if let error { throw error }
|
||||
return []
|
||||
}
|
||||
|
||||
// Implement remaining protocol 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 project management tasks that the developer could use from the command line. To show the list of tasks on the `Terminal` app, plus display some explanations about each and every one of them; please enter the following command:
|
||||
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
|
||||
@@ -55,15 +117,10 @@ $ make
|
||||
|
||||
- ``AmiiboClient``
|
||||
- ``AmiiboLiveClient``
|
||||
- ``AmiiboMockClient``
|
||||
|
||||
### Models
|
||||
|
||||
- ``Amiibo``
|
||||
- ``Amiibo/Game``
|
||||
- ``Amiibo/Platform``
|
||||
- ``Amiibo/Release``
|
||||
- ``Amiibo/Usage``
|
||||
- ``AmiiboSeries``
|
||||
- ``AmiiboType``
|
||||
- ``GameCharacter``
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
|
||||
@@ -16,17 +18,29 @@ extension DateFormatter {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// An ISO date formatter.
|
||||
///
|
||||
/// This formatter implements the `yyyy-MM-dd` date format.
|
||||
static let isoDate: DateFormatter = {
|
||||
let formatter = DateFormatter()
|
||||
|
||||
formatter.dateFormat = "yyyy-MM-dd"
|
||||
formatter.timeZone = .init(secondsFromGMT: 0)
|
||||
|
||||
return formatter
|
||||
}()
|
||||
|
||||
/// An ISO timestamp formatter.
|
||||
///
|
||||
/// 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.
|
||||
static var isoTimestamp: DateFormatter {
|
||||
static let isoTimestamp: DateFormatter = {
|
||||
let formatter = DateFormatter()
|
||||
|
||||
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
|
||||
formatter.timeZone = .init(secondsFromGMT: 0)
|
||||
|
||||
return formatter
|
||||
}
|
||||
}()
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A protocol that defines filters that might contain `key` and/or `name` values.
|
||||
/// A protocol that defines filters containing optional `key` and/or `name` values for querying resources.
|
||||
protocol KeyNameFilter {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
@@ -1,24 +1,26 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A protocol that defines decodable models containing the `key` and `name` properties.
|
||||
protocol KeyNameModel: Sendable {
|
||||
/// A protocol that defines models containing a `key` and `name` pair.
|
||||
protocol KeyNameModel: Sendable, Hashable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A key.
|
||||
/// A hexadecimal key that uniquely identifies this model.
|
||||
var key: String { get }
|
||||
|
||||
/// A name.
|
||||
/// A display name for this model.
|
||||
var name: String { get }
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 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.
|
||||
struct ISODateTimeTranscoder {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A formatter to use to decode and encode ISO timestamp dates.
|
||||
private let timestampFormatter: DateFormatter = .isoTimestamp
|
||||
|
||||
/// A formatter to use to decode and encode ISO date-only strings.
|
||||
private let dateFormatter: DateFormatter = .isoDate
|
||||
|
||||
}
|
||||
|
||||
// MARK: - DateTranscoder
|
||||
|
||||
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.
|
||||
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.
|
||||
func decode(_ string: String) throws -> Date {
|
||||
if let date = timestampFormatter.date(from: string) {
|
||||
return date
|
||||
}
|
||||
|
||||
if let date = dateFormatter.date(from: string) {
|
||||
return date
|
||||
}
|
||||
|
||||
throw DecodingError.dataCorrupted(.init(
|
||||
codingPath: [],
|
||||
debugDescription: "Expected an ISO date with format 'yyyy-MM-dd'T'HH:mm:ss.SSSSSS' or 'yyyy-MM-dd', but found '\(string)' instead."
|
||||
))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// See LICENSE for license information
|
||||
// See CONTRIBUTORS for the list of AmiiboAPI project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
import OpenAPIRuntime
|
||||
|
||||
/// A type that allows the decoding and encoding of ISO timestamp dates, defined by the `yyyy-MM-dd'T'HH:mm:ss.SSSSSS` custom date format.
|
||||
struct ISOTimestampTranscoder {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A formatter to use to decode and encode ISO timestamps dates.
|
||||
private let dateFormatter: DateFormatter = .isoTimestamp
|
||||
|
||||
}
|
||||
|
||||
// MARK: - DateTranscoder
|
||||
|
||||
extension ISOTimestampTranscoder: DateTranscoder {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
func encode(_ date: Date) throws -> String {
|
||||
dateFormatter.string(from: date)
|
||||
}
|
||||
|
||||
func decode(_ string: String) throws -> Date {
|
||||
dateFormatter.date(from: string) ?? .init()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,45 +1,51 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
import OpenAPIRuntime
|
||||
import OpenAPIURLSession
|
||||
|
||||
/// A type that implements a live client to the online service.
|
||||
public struct AmiiboLiveClient {
|
||||
/// A type that implements a live client to the [Amiibo API](https://www.amiiboapi.org) online service.
|
||||
public struct AmiiboLiveClient: Sendable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A client generated by the `OpenAPIRuntime` library.
|
||||
/// A client generated by the OpenAPI Runtime library to perform API calls.
|
||||
private let client: Client
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this client.
|
||||
public init() {
|
||||
/// 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.
|
||||
public init(transport: any ClientTransport = URLSessionTransport()) {
|
||||
guard let serverURL = 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.")
|
||||
}
|
||||
|
||||
self.client = .init(
|
||||
// The force unwrapping implemented below assumes that the server definition from the OpenAPI specification is correct.
|
||||
serverURL: try! Servers.Server1.url(),
|
||||
configuration: .init(dateTranscoder: ISOTimestampTranscoder()),
|
||||
transport: URLSessionTransport()
|
||||
serverURL: serverURL,
|
||||
configuration: .init(dateTranscoder: ISODateTimeTranscoder()),
|
||||
transport: transport
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - APIClient
|
||||
// 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 (?).
|
||||
|
||||
extension AmiiboLiveClient: APIClient {
|
||||
extension AmiiboLiveClient: AmiiboClient {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
@@ -51,44 +57,7 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getAmiibos(
|
||||
by filter: AmiiboFilter
|
||||
) async throws(AmiiboServiceError) -> [Amiibo] {
|
||||
let response: Operations.getAmiibos.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiibos(
|
||||
.init(query: .init(
|
||||
amiiboSeries: filter.series,
|
||||
character: filter.gameCharacter,
|
||||
gameseries: filter.gameSeries,
|
||||
id: filter.identifier,
|
||||
name: filter.name,
|
||||
showgames: filter.showGames,
|
||||
showusage: filter.showUsage,
|
||||
_type: filter.type
|
||||
))
|
||||
)
|
||||
} catch let error as ClientError {
|
||||
if error.underlyingError is DecodingError {
|
||||
throw AmiiboServiceError.decoding
|
||||
} else {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchAmiibos(filter)
|
||||
}
|
||||
|
||||
/// Gets a list of amiibo series based on a given filter.
|
||||
@@ -98,38 +67,7 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getAmiiboSeries(
|
||||
by filter: AmiiboSeriesFilter
|
||||
) async throws(AmiiboServiceError) -> [AmiiboSeries] {
|
||||
let response: Operations.getAmiiboSeries.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiiboSeries(
|
||||
.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
))
|
||||
)
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output, as: AmiiboSeries.self)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchAmiiboSeries(filter)
|
||||
}
|
||||
|
||||
/// Gets a list of amiibo types based on a given filter.
|
||||
@@ -139,38 +77,7 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getAmiiboTypes(
|
||||
by filter: AmiiboTypeFilter
|
||||
) async throws(AmiiboServiceError) -> [AmiiboType] {
|
||||
let response: Operations.getAmiiboTypes.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiiboTypes(
|
||||
.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
))
|
||||
)
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output, as: AmiiboType.self)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchAmiiboTypes(filter)
|
||||
}
|
||||
|
||||
/// Gets a list of game characters based on a given filter.
|
||||
@@ -180,38 +87,7 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getGameCharacters(
|
||||
by filter: GameCharacterFilter
|
||||
) async throws(AmiiboServiceError) -> [GameCharacter] {
|
||||
let response: Operations.getGameCharacters.Output
|
||||
|
||||
do {
|
||||
response = try await client.getGameCharacters(
|
||||
.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
))
|
||||
)
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output, as: GameCharacter.self)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchGameCharacters(filter)
|
||||
}
|
||||
|
||||
/// Gets a list of game series based on a given filter.
|
||||
@@ -221,62 +97,14 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getGameSeries(
|
||||
by filter: GameSeriesFilter
|
||||
) async throws(AmiiboServiceError) -> [GameSeries] {
|
||||
let response: Operations.getGameSeries.Output
|
||||
|
||||
do {
|
||||
response = try await client.getGameSeries(
|
||||
.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
))
|
||||
)
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output, as: GameSeries.self)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchGameSeries(filter)
|
||||
}
|
||||
|
||||
/// Gets the date when the data was last updated.
|
||||
/// - Returns: A last updated date.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getLastUpdated() async throws(AmiiboServiceError) -> Date {
|
||||
let response: Operations.getLastUpdated.Output
|
||||
|
||||
do {
|
||||
response = try await client.getLastUpdated()
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return output.lastUpdated
|
||||
}
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchLastUpdated()
|
||||
}
|
||||
#else
|
||||
/// Gets a list of amiibo items based on a given filter.
|
||||
@@ -286,44 +114,7 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getAmiibos(
|
||||
by filter: AmiiboFilter
|
||||
) async throws -> [Amiibo] {
|
||||
let response: Operations.getAmiibos.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiibos(
|
||||
.init(query: .init(
|
||||
amiiboSeries: filter.series,
|
||||
character: filter.gameCharacter,
|
||||
gameseries: filter.gameSeries,
|
||||
id: filter.identifier,
|
||||
name: filter.name,
|
||||
showgames: filter.showGames,
|
||||
showusage: filter.showUsage,
|
||||
_type: filter.type
|
||||
))
|
||||
)
|
||||
} catch let error as ClientError {
|
||||
if error.underlyingError is DecodingError {
|
||||
throw AmiiboServiceError.decoding
|
||||
} else {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchAmiibos(filter)
|
||||
}
|
||||
|
||||
/// Gets a list of amiibo series based on a given filter.
|
||||
@@ -333,38 +124,7 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getAmiiboSeries(
|
||||
by filter: AmiiboSeriesFilter
|
||||
) async throws -> [AmiiboSeries] {
|
||||
let response: Operations.getAmiiboSeries.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiiboSeries(
|
||||
.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
))
|
||||
)
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output, as: AmiiboSeries.self)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchAmiiboSeries(filter)
|
||||
}
|
||||
|
||||
/// Gets a list of amiibo types based on a given filter.
|
||||
@@ -374,38 +134,7 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getAmiiboTypes(
|
||||
by filter: AmiiboTypeFilter
|
||||
) async throws -> [AmiiboType] {
|
||||
let response: Operations.getAmiiboTypes.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiiboTypes(
|
||||
.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
))
|
||||
)
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output, as: AmiiboType.self)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchAmiiboTypes(filter)
|
||||
}
|
||||
|
||||
/// Gets a list of game characters based on a given filter.
|
||||
@@ -415,38 +144,7 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getGameCharacters(
|
||||
by filter: GameCharacterFilter
|
||||
) async throws -> [GameCharacter] {
|
||||
let response: Operations.getGameCharacters.Output
|
||||
|
||||
do {
|
||||
response = try await client.getGameCharacters(
|
||||
.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
))
|
||||
)
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output, as: GameCharacter.self)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchGameCharacters(filter)
|
||||
}
|
||||
|
||||
/// Gets a list of game series based on a given filter.
|
||||
@@ -456,62 +154,14 @@ extension AmiiboLiveClient: APIClient {
|
||||
public func getGameSeries(
|
||||
by filter: GameSeriesFilter
|
||||
) async throws -> [GameSeries] {
|
||||
let response: Operations.getGameSeries.Output
|
||||
|
||||
do {
|
||||
response = try await client.getGameSeries(
|
||||
.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
))
|
||||
)
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return map(output, as: GameSeries.self)
|
||||
}
|
||||
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchGameSeries(filter)
|
||||
}
|
||||
|
||||
/// Gets the date when the data was last updated.
|
||||
/// - Returns: A last updated date.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getLastUpdated() async throws -> Date {
|
||||
let response: Operations.getLastUpdated.Output
|
||||
|
||||
do {
|
||||
response = try await client.getLastUpdated()
|
||||
} catch {
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return output.lastUpdated
|
||||
}
|
||||
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
try await fetchLastUpdated()
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -523,40 +173,279 @@ private extension AmiiboLiveClient {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
/// Retrieves a list of amiibo items from a wrapper container.
|
||||
/// - Parameter wrapper: A wrapper container that either has an object or a list of items.
|
||||
/// - Returns: A list of amiibo items, sorted by identifiers.
|
||||
func map(
|
||||
_ wrapper: Components.Schemas.AmiiboWrapper
|
||||
) -> [Amiibo] {
|
||||
switch wrapper.amiibo {
|
||||
case let .Amiibo(object):
|
||||
return [.init(object)]
|
||||
|
||||
case let .AmiiboList(list):
|
||||
return list
|
||||
.map { .init($0) }
|
||||
.sorted { $0.identifier < $1.identifier }
|
||||
/// 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.
|
||||
func fetchAmiibos(
|
||||
_ filter: AmiiboFilter
|
||||
) async throws -> [Amiibo] {
|
||||
let response: Operations.getAmiibos.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiibos(.init(query: .init(
|
||||
id: filter.identifier,
|
||||
head: filter.head,
|
||||
tail: filter.tail,
|
||||
name: filter.name,
|
||||
_type: filter.type,
|
||||
amiiboSeries: filter.series,
|
||||
character: filter.gameCharacter,
|
||||
gameseries: filter.gameSeries,
|
||||
showgames: filter.showGames,
|
||||
showusage: filter.showUsage
|
||||
)))
|
||||
} catch {
|
||||
try handle(error: error)
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
switch output.amiibo {
|
||||
case let .Amiibo(object):
|
||||
return [Amiibo(object)]
|
||||
case let .case2(list):
|
||||
return list
|
||||
.map { Amiibo($0) }
|
||||
.sorted { $0.identifier < $1.identifier }
|
||||
case .none:
|
||||
return []
|
||||
}
|
||||
}
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
}
|
||||
|
||||
/// 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.
|
||||
func fetchAmiiboSeries(
|
||||
_ filter: AmiiboSeriesFilter
|
||||
) async throws -> [AmiiboSeries] {
|
||||
let response: Operations.getAmiiboSeries.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiiboSeries(.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
)))
|
||||
} catch {
|
||||
try handle(error: error)
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
switch output.amiibo {
|
||||
case let .AmiiboSeries(payload):
|
||||
return [AmiiboSeries(payload.value1)]
|
||||
case let .case2(list):
|
||||
return list
|
||||
.map { AmiiboSeries($0.value1) }
|
||||
.sorted { $0.key < $1.key }
|
||||
}
|
||||
}
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
}
|
||||
|
||||
/// Retrieves a list of items that conforms to the `KeyNameModel` protocol from a wrapper container.
|
||||
/// - Parameters:
|
||||
/// - wrapper: A wrapper container that either has an object or a list of items.
|
||||
/// - as: a model type that conforms to the `KeyNameModel` protocol.
|
||||
/// - Returns: A list of items that conforms to the `KeyNameModel` protocol, sorted by keys.
|
||||
func map<Model: KeyNameModel>(
|
||||
_ wrapper: Components.Schemas.TupleWrapper,
|
||||
as: Model.Type
|
||||
) -> [Model] {
|
||||
switch wrapper.amiibo {
|
||||
case let .Tuple(payload):
|
||||
return [.init(payload)]
|
||||
|
||||
case let .TupleList(list):
|
||||
return list
|
||||
.map { .init($0) }
|
||||
.sorted { $0.key < $1.key }
|
||||
/// 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.
|
||||
func fetchAmiiboTypes(
|
||||
_ filter: AmiiboTypeFilter
|
||||
) async throws -> [AmiiboType] {
|
||||
let response: Operations.getAmiiboTypes.Output
|
||||
|
||||
do {
|
||||
response = try await client.getAmiiboTypes(.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
)))
|
||||
} catch {
|
||||
try handle(error: error)
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
switch output.amiibo {
|
||||
case let .AmiiboType(payload):
|
||||
return [AmiiboType(payload.value1)]
|
||||
case let .case2(list):
|
||||
return list
|
||||
.map { AmiiboType($0.value1) }
|
||||
.sorted { $0.key < $1.key }
|
||||
}
|
||||
}
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
}
|
||||
|
||||
/// 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.
|
||||
func fetchGameCharacters(
|
||||
_ filter: GameCharacterFilter
|
||||
) async throws -> [GameCharacter] {
|
||||
let response: Operations.getGameCharacters.Output
|
||||
|
||||
do {
|
||||
response = try await client.getGameCharacters(.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
)))
|
||||
} catch {
|
||||
try handle(error: error)
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
switch output.amiibo {
|
||||
case let .GameCharacter(payload):
|
||||
return [GameCharacter(payload.value1)]
|
||||
case let .case2(list):
|
||||
return list
|
||||
.map { GameCharacter($0.value1) }
|
||||
.sorted { $0.key < $1.key }
|
||||
}
|
||||
}
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
}
|
||||
|
||||
/// 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.
|
||||
func fetchGameSeries(
|
||||
_ filter: GameSeriesFilter
|
||||
) async throws -> [GameSeries] {
|
||||
let response: Operations.getGameSeries.Output
|
||||
|
||||
do {
|
||||
response = try await client.getGameSeries(.init(query: .init(
|
||||
key: filter.key,
|
||||
name: filter.name
|
||||
)))
|
||||
} catch {
|
||||
try handle(error: error)
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
switch output.amiibo {
|
||||
case let .GameSeries(payload):
|
||||
return [GameSeries(payload.value1)]
|
||||
case let .case2(list):
|
||||
return list
|
||||
.map { GameSeries($0.value1) }
|
||||
.sorted { $0.key < $1.key }
|
||||
}
|
||||
}
|
||||
case .badRequest:
|
||||
throw AmiiboServiceError.badRequest
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
case .notFound:
|
||||
throw AmiiboServiceError.notFound
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
}
|
||||
|
||||
/// Fetches the date when the data was last updated.
|
||||
/// - Returns: A fetched last updated date.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
func fetchLastUpdated() async throws -> Date {
|
||||
let response: Operations.getLastUpdated.Output
|
||||
|
||||
do {
|
||||
response = try await client.getLastUpdated()
|
||||
} catch {
|
||||
try handle(error: error)
|
||||
}
|
||||
|
||||
switch response {
|
||||
case let .ok(ok):
|
||||
switch ok.body {
|
||||
case let .json(output):
|
||||
return output.lastUpdated
|
||||
}
|
||||
case .internalServerError:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
case let .undocumented(statusCode, _):
|
||||
throw AmiiboServiceError.undocumented(statusCode)
|
||||
}
|
||||
}
|
||||
|
||||
/// Maps a given error to an ``AmiiboServiceError`` error.
|
||||
/// - Parameter error: An error to map.
|
||||
/// - Throws: An ``AmiiboServiceError`` error that corresponds to the given error.
|
||||
func handle(error: any Error) throws -> Never {
|
||||
switch error {
|
||||
case is CancellationError:
|
||||
throw AmiiboServiceError.cancelled
|
||||
case let clientError as ClientError:
|
||||
switch clientError.underlyingError {
|
||||
case is DecodingError:
|
||||
throw AmiiboServiceError.decoding
|
||||
case let urlError as URLError:
|
||||
switch urlError.code {
|
||||
case .cannotFindHost,
|
||||
.cannotConnectToHost,
|
||||
.dnsLookupFailed,
|
||||
.networkConnectionLost,
|
||||
.notConnectedToInternet,
|
||||
.timedOut:
|
||||
throw AmiiboServiceError.notAvailable
|
||||
default:
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
default:
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
default:
|
||||
throw AmiiboServiceError.unknown
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,263 +0,0 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// See LICENSE for license information
|
||||
// See CONTRIBUTORS for the list of AmiiboAPI project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
|
||||
/// A type that implements a mock client, for testing purposes.
|
||||
public struct AmiiboMockClient {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A list of amiibo items to return, if any.
|
||||
private let amiibos: [Amiibo]?
|
||||
|
||||
/// A list of amiibo series to return, if any.
|
||||
private let amiiboSeries: [AmiiboSeries]?
|
||||
|
||||
/// A list of amiibo types to return, if any.
|
||||
private let amiiboTypes: [AmiiboType]?
|
||||
|
||||
/// An error to throw, if any.
|
||||
private let error: AmiiboServiceError?
|
||||
|
||||
/// A list of game characters to return, if any.
|
||||
private let gameCharacters: [GameCharacter]?
|
||||
|
||||
/// A list of game series to return, if any.
|
||||
private let gameSeries: [GameSeries]?
|
||||
|
||||
/// A last updated date to return, if any.
|
||||
private let lastUpdated: Date?
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this client.
|
||||
/// - Parameters:
|
||||
/// - amiibos: A list of amiibo items to return, if any.
|
||||
/// - amiiboSeries: A list of amiibo series to return, if any.
|
||||
/// - amiiboTypes: A list of amiibo types to return, if any.
|
||||
/// - gameCharacters: A list of game characters to return, if any.
|
||||
/// - gameSeries: A list of game series to return, if any.
|
||||
/// - lastUpdated: A last updated date to return, if any.
|
||||
/// - error: An error to throw, if any.
|
||||
public init(
|
||||
amiibos: [Amiibo]? = nil,
|
||||
amiiboSeries: [AmiiboSeries]? = nil,
|
||||
amiiboTypes: [AmiiboType]? = nil,
|
||||
gameCharacters: [GameCharacter]? = nil,
|
||||
gameSeries: [GameSeries]? = nil,
|
||||
lastUpdated: Date? = nil,
|
||||
error: AmiiboServiceError? = nil
|
||||
) {
|
||||
self.amiibos = amiibos
|
||||
self.amiiboSeries = amiiboSeries
|
||||
self.amiiboTypes = amiiboTypes
|
||||
self.error = error
|
||||
self.gameCharacters = gameCharacters
|
||||
self.gameSeries = gameSeries
|
||||
self.lastUpdated = lastUpdated
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - APIClient
|
||||
// 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 (?).
|
||||
|
||||
extension AmiiboMockClient: APIClient {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
#if swift(>=6.0)
|
||||
/// Gets 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 filtered amiibo items.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getAmiibos(by filter: AmiiboFilter) async throws(AmiiboServiceError) -> [Amiibo] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiibos else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiibos
|
||||
}
|
||||
|
||||
/// Gets 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 filtered amiibo series.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getAmiiboSeries(by filter: AmiiboSeriesFilter) async throws(AmiiboServiceError) -> [AmiiboSeries] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiiboSeries else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiiboSeries
|
||||
}
|
||||
|
||||
/// Gets 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 filtered amiibo types.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getAmiiboTypes(by filter: AmiiboTypeFilter) async throws(AmiiboServiceError) -> [AmiiboType] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiiboTypes else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiiboTypes
|
||||
}
|
||||
|
||||
/// Gets 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 filtered game characters.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getGameCharacters(by filter: GameCharacterFilter) async throws(AmiiboServiceError) -> [GameCharacter] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let gameCharacters else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return gameCharacters
|
||||
}
|
||||
|
||||
/// Gets 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 filtered game series.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getGameSeries(by filter: GameSeriesFilter) async throws(AmiiboServiceError) -> [GameSeries] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let gameSeries else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return gameSeries
|
||||
}
|
||||
|
||||
/// Gets the date when the data was last updated.
|
||||
/// - Returns: A last updated date.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getLastUpdated() async throws(AmiiboServiceError) -> Date {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let lastUpdated else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return lastUpdated
|
||||
}
|
||||
#else
|
||||
/// Gets 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 filtered amiibo items.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getAmiibos(by filter: AmiiboFilter) async throws -> [Amiibo] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiibos else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiibos
|
||||
}
|
||||
|
||||
/// Gets 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 filtered amiibo series.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getAmiiboSeries(by filter: AmiiboSeriesFilter) async throws -> [AmiiboSeries] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiiboSeries else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiiboSeries
|
||||
}
|
||||
|
||||
/// Gets 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 filtered amiibo types.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getAmiiboTypes(by filter: AmiiboTypeFilter) async throws -> [AmiiboType] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiiboTypes else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiiboTypes
|
||||
}
|
||||
|
||||
/// Gets 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 filtered game characters.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getGameCharacters(by filter: GameCharacterFilter) async throws -> [GameCharacter] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let gameCharacters else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return gameCharacters
|
||||
}
|
||||
|
||||
/// Gets 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 filtered game series.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getGameSeries(by filter: GameSeriesFilter) async throws -> [GameSeries] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let gameSeries else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return gameSeries
|
||||
}
|
||||
|
||||
/// Gets the date when the data was last updated.
|
||||
/// - Returns: A last updated date.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case some issue is encountered while generating the result.
|
||||
public func getLastUpdated() async throws -> Date {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let lastUpdated else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return lastUpdated
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Helpers
|
||||
|
||||
private extension AmiiboMockClient {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
/// Throws an error if it has been provided,
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case an error has been provided.
|
||||
func throwErrorIfExists() throws(AmiiboServiceError) {
|
||||
if let error {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// See LICENSE for license information
|
||||
// See CONTRIBUTORS for the list of AmiiboAPI project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
|
||||
/// A representation of the types of client that a ``AmiiboService`` service can utilize.
|
||||
///
|
||||
/// > important: This enumeration has been defined as a way to avoid exposing the `APIClient` protocol outside the boundaries of this library.
|
||||
public enum AmiiboClient {
|
||||
/// A live Amiibo client to interact with the online service.
|
||||
case live(AmiiboLiveClient = .init())
|
||||
///A mock Amiibo client, for testing purposes.
|
||||
case mock(AmiiboMockClient)
|
||||
}
|
||||
@@ -1,31 +1,57 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
// This source file is part of the Amiibo Service open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
|
||||
/// A representation of all the possible errors that the ``AmiiboService`` service could throw.
|
||||
public enum AmiiboServiceError: Error {
|
||||
/// A bad request has been given to the client.
|
||||
/// The request was malformed or contained invalid filter parameters.
|
||||
case badRequest
|
||||
/// A response cannot be decoded.
|
||||
/// The request was cancelled before a response was received.
|
||||
case cancelled
|
||||
/// The response body could not be decoded into the expected model.
|
||||
case decoding
|
||||
/// An online service is not currently available.
|
||||
/// The backend service is currently unreachable due to a network or server issue.
|
||||
case notAvailable
|
||||
/// A response cannot be found.
|
||||
/// No results were found matching the given filter criteria.
|
||||
case notFound
|
||||
/// An undocumented/unsupported status code error.
|
||||
/// The server returned an undocumented HTTP status code.
|
||||
case undocumented(_ statusCode: Int)
|
||||
/// An unknown error.
|
||||
/// An unexpected error that does not fall into any other category.
|
||||
case unknown
|
||||
}
|
||||
|
||||
// MARK: - Equatable
|
||||
|
||||
extension AmiiboServiceError: Equatable {}
|
||||
|
||||
// MARK: - LocalizedError
|
||||
|
||||
extension AmiiboServiceError: LocalizedError {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
public var errorDescription: String? {
|
||||
switch self {
|
||||
case .badRequest: "The request was malformed or contained invalid filter parameters."
|
||||
case .cancelled: "The request was cancelled before a response was received."
|
||||
case .decoding: "The response body could not be decoded into the expected model."
|
||||
case .notAvailable: "The backend service is currently unreachable due to a network or server issue."
|
||||
case .notFound: "No results were found matching the given filter criteria."
|
||||
case .undocumented(let statusCode): "The server returned an undocumented HTTP status code: \(statusCode)."
|
||||
case .unknown: "An unexpected error occurred."
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,33 +1,38 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A type that contains values to fine-tune a response when requesting amiibo items.
|
||||
public struct AmiiboFilter {
|
||||
public struct AmiiboFilter: Sendable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A game character to return, if any.
|
||||
/// A game character to filter the result, if any.
|
||||
public let gameCharacter: String?
|
||||
|
||||
/// A game series to return, if any.
|
||||
/// A game series to filter the result, if any.
|
||||
public let gameSeries: String?
|
||||
|
||||
/// A first part of an identifier to filter the result, if any.
|
||||
public let head: String?
|
||||
|
||||
/// An amiibo identifier to return, if any.
|
||||
/// An amiibo identifier to filter the result, if any.
|
||||
public let identifier: String?
|
||||
|
||||
/// An amiibo name to return, if any.
|
||||
/// An amiibo name to filter the result, if any.
|
||||
public let name: String?
|
||||
|
||||
/// An amiibo series to return, if any.
|
||||
/// An amiibo series to filter the result, if any.
|
||||
public let series: String?
|
||||
|
||||
/// A flag indicating whether to include games in the response, if any.
|
||||
@@ -35,23 +40,30 @@ public struct AmiiboFilter {
|
||||
|
||||
/// A flag indicating whether to include amiibo usages in games in the response, if any.
|
||||
public let showUsage: Bool?
|
||||
|
||||
/// A last part of an identifier to filter the result, if any.
|
||||
public let tail: String?
|
||||
|
||||
/// An amiibo type to return, if any.
|
||||
/// An amiibo type to filter the result, if any.
|
||||
public let type: String?
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this filter.
|
||||
/// - Parameters:
|
||||
/// - identifier: An amiibo identifier to return, if any.
|
||||
/// - name: An amiibo name to return, if any.
|
||||
/// - type: An amiibo type to return, if any.
|
||||
/// - series: An amiibo series to return, if any.
|
||||
/// - gameCharacter: A game character to return, if any.
|
||||
/// - gameSeries: A game series to return, if any.
|
||||
/// - 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.
|
||||
public init(
|
||||
head: String? = nil,
|
||||
tail: String? = nil,
|
||||
identifier: String? = nil,
|
||||
name: String? = nil,
|
||||
type: String? = nil,
|
||||
@@ -63,11 +75,13 @@ public struct AmiiboFilter {
|
||||
) {
|
||||
self.gameCharacter = gameCharacter
|
||||
self.gameSeries = gameSeries
|
||||
self.head = head
|
||||
self.identifier = identifier
|
||||
self.name = name
|
||||
self.series = series
|
||||
self.showGames = showGames
|
||||
self.showUsage = showUsage
|
||||
self.tail = tail
|
||||
self.type = type
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A type that contains values to fine-tune a response when requesting amiibo series.
|
||||
public struct AmiiboSeriesFilter: KeyNameFilter {
|
||||
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 (?).
|
||||
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A type that contains values to fine-tune a response when requesting amiibo types.
|
||||
public struct AmiiboTypeFilter: KeyNameFilter {
|
||||
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 (?).
|
||||
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A type that contains values to fine-tune a response when requesting game characters.
|
||||
public struct GameCharacterFilter: KeyNameFilter {
|
||||
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 (?).
|
||||
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A type that contains values to fine-tune a response when requesting game series.
|
||||
public struct GameSeriesFilter: KeyNameFilter {
|
||||
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 (?).
|
||||
|
||||
|
||||
@@ -1,50 +1,52 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
|
||||
/// A model that represents an amiibo item.
|
||||
public struct Amiibo: Sendable {
|
||||
/// A model that represents an amiibo.
|
||||
public struct Amiibo: Sendable, Hashable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A game character.
|
||||
/// The name of the game character associated with this amiibo.
|
||||
public let gameCharacter: String
|
||||
|
||||
/// A game series.
|
||||
/// The name of the game series associated with this amiibo.
|
||||
public let gameSeries: String
|
||||
|
||||
/// The first 8 hexadecimal characters of an identifier.
|
||||
/// The first 8 hexadecimal characters of the amiibo identifier.
|
||||
public let head: String
|
||||
|
||||
/// An image link.
|
||||
/// A URL string pointing to the image of this amiibo.
|
||||
public let image: String
|
||||
|
||||
/// An amiibo name.
|
||||
/// The name of this amiibo.
|
||||
public let name: String
|
||||
|
||||
/// A game platform type, if any.
|
||||
/// The game platform data for this amiibo, if available.
|
||||
public let platform: Platform?
|
||||
|
||||
/// A release date.
|
||||
/// The release dates of this amiibo across different regions.
|
||||
public let release: Release
|
||||
|
||||
/// An amiibo series.
|
||||
/// The name of the amiibo series this amiibo belongs to.
|
||||
public let series: String
|
||||
|
||||
/// The last 8 hexadecimal characters of an identifier.
|
||||
/// The last 8 hexadecimal characters of the amiibo identifier.
|
||||
public let tail: String
|
||||
|
||||
/// An amiibo type.
|
||||
/// The type of this amiibo (e.g., Figure, Card, Yarn, Band).
|
||||
public let type: String
|
||||
|
||||
// MARK: Initializers
|
||||
@@ -59,6 +61,7 @@ public struct Amiibo: Sendable {
|
||||
self.name = payload.name
|
||||
self.platform = .init(
|
||||
payload.gamesSwitch,
|
||||
payload.gamesSwitch2,
|
||||
payload.games3DS,
|
||||
payload.gamesWiiU
|
||||
)
|
||||
@@ -70,12 +73,12 @@ public struct Amiibo: Sendable {
|
||||
|
||||
// MARK: Computed
|
||||
|
||||
/// An identifier.
|
||||
/// The full 16-character hexadecimal identifier, composed of the ``head`` and ``tail``.
|
||||
public var identifier: String {
|
||||
head + tail
|
||||
}
|
||||
|
||||
/// A URL related to an image link, if any.
|
||||
/// A URL constructed from the ``image`` string, if valid.
|
||||
public var imageURL: URL? {
|
||||
.init(string: image)
|
||||
}
|
||||
|
||||
@@ -1,28 +1,30 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
extension Amiibo {
|
||||
/// A model that represents a game related to an amiibo item.
|
||||
public struct Game: Sendable {
|
||||
/// A model that represents a game related to an amiibo.
|
||||
public struct Game: Sendable, Hashable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A list of identifiers.
|
||||
/// A list of game identifiers associated with this game.
|
||||
public let identifiers: [String]
|
||||
|
||||
/// A name.
|
||||
/// The name of this game.
|
||||
public let name: String
|
||||
|
||||
/// A list of amiibo usages, if any.
|
||||
/// A list of amiibo usages within this game, if available.
|
||||
public let usages: [Usage]?
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
@@ -1,46 +1,54 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
extension Amiibo {
|
||||
/// A model that represents a collection of `WiiU`, `3DS`, and `Switch` games related to an amiibo item.
|
||||
public struct Platform: Sendable {
|
||||
/// A model that represents a collection of `Switch`, `Switch 2`, `3DS`, and `Wii U` games related to an amiibo.
|
||||
public struct Platform: Sendable, Hashable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A list of `Switch` games related to an amiibo item.
|
||||
/// A list of `Switch` games related to an amiibo.
|
||||
public let `switch`: [Game]
|
||||
|
||||
/// A list of `Switch 2` games related to an amiibo.
|
||||
public let switch2: [Game]
|
||||
|
||||
/// A list of `3DS` games related to an amiibo item.
|
||||
/// A list of `3DS` games related to an amiibo.
|
||||
public let threeDS: [Game]
|
||||
|
||||
/// A list of `WiiU` games related to an amiibo item.
|
||||
/// A list of `Wii U` games related to an amiibo.
|
||||
public let wiiU: [Game]
|
||||
|
||||
// MARK: Initialisers
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this model.
|
||||
///
|
||||
/// > important: In case no data is provided, then an instance of this model is not created.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - switch: A list of `Switch` games related to an amiibo item, if any.
|
||||
/// - threeDS: A list of `3DS` games related to an amiibo item, if any.
|
||||
/// - wiiU: A list of `WiiU` games related to an amiibo item, if any.
|
||||
/// - switch: A list of `Switch` games related to an amiibo, if any.
|
||||
/// - switch2: A list of `Switch 2` games related to an amiibo, if any.
|
||||
/// - threeDS: A list of `3DS` games related to an amiibo, if any.
|
||||
/// - wiiU: A list of `Wii U` games related to an amiibo, if any.
|
||||
init?(
|
||||
_ `switch`: [Components.Schemas.AmiiboGame]?,
|
||||
_ switch2: [Components.Schemas.AmiiboGame]?,
|
||||
_ threeDS: [Components.Schemas.AmiiboGame]?,
|
||||
_ wiiU: [Components.Schemas.AmiiboGame]?
|
||||
) {
|
||||
guard (`switch` != nil && `switch`?.isEmpty == false)
|
||||
|| (switch2 != nil && switch2?.isEmpty == false)
|
||||
|| (threeDS != nil && threeDS?.isEmpty == false)
|
||||
|| (wiiU != nil && wiiU?.isEmpty == false)
|
||||
else {
|
||||
@@ -51,6 +59,10 @@ extension Amiibo {
|
||||
guard let `switch` else { return [] }
|
||||
return `switch`.map { .init($0) }
|
||||
}()
|
||||
self.switch2 = {
|
||||
guard let switch2 else { return [] }
|
||||
return switch2.map { .init($0) }
|
||||
}()
|
||||
self.threeDS = {
|
||||
guard let threeDS else { return [] }
|
||||
return threeDS.map { .init($0) }
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
|
||||
extension Amiibo {
|
||||
/// A model that represents a collection of release dates related to an amiibo item.
|
||||
public struct Release: Sendable {
|
||||
/// A model that represents the regional release dates of an amiibo.
|
||||
public struct Release: Sendable, Hashable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
|
||||
@@ -1,25 +1,27 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
extension Amiibo {
|
||||
/// A model that represents the usage of an amiibo item within a certain game.
|
||||
public struct Usage: Sendable {
|
||||
/// A model that represents the usage of an amiibo within a certain game.
|
||||
public struct Usage: Sendable, Hashable {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// An explanation of how to use an amiibo item.
|
||||
/// A description of how the amiibo is used within the game.
|
||||
public let explanation: String
|
||||
|
||||
/// A flag that indicates whether an amiibo item can save game data in it.
|
||||
/// A flag that indicates whether the amiibo can save game data.
|
||||
public let isWriteable: Bool
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
@@ -1,30 +1,32 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A model that represents an amiibo series.
|
||||
public struct AmiiboSeries: KeyNameModel {
|
||||
|
||||
// TODO: Remove the documentation from the properties of this type as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
|
||||
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A key.
|
||||
/// The hexadecimal key that uniquely identifies this amiibo series.
|
||||
public let key: String
|
||||
|
||||
/// A name.
|
||||
/// The name of this amiibo series.
|
||||
public let name: String
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this model from a given payload.
|
||||
/// - Parameter payload: A payload that contains the values for the model.
|
||||
init(_ payload: Components.Schemas.Tuple) {
|
||||
self.key = payload.key
|
||||
self.name = payload.name
|
||||
|
||||
@@ -1,30 +1,32 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A model that represents an amiibo type.
|
||||
public struct AmiiboType: KeyNameModel {
|
||||
|
||||
// TODO: Remove the documentation from the properties of this type as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A key.
|
||||
/// The hexadecimal key that uniquely identifies this amiibo type.
|
||||
public let key: String
|
||||
|
||||
/// A name.
|
||||
/// The name of this amiibo type (e.g., Figure, Card, Yarn, Band).
|
||||
public let name: String
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this model from a given payload.
|
||||
/// - Parameter payload: A payload that contains the values for the model.
|
||||
init(_ payload: Components.Schemas.Tuple) {
|
||||
self.key = payload.key
|
||||
self.name = payload.name
|
||||
|
||||
@@ -1,30 +1,32 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A model that represents a game character.
|
||||
public struct GameCharacter: KeyNameModel {
|
||||
|
||||
// TODO: Remove the documentation from the properties of this type as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A key.
|
||||
/// The hexadecimal key that uniquely identifies this game character.
|
||||
public let key: String
|
||||
|
||||
/// A name.
|
||||
/// The name of this game character.
|
||||
public let name: String
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
|
||||
/// Initializes this model from a given payload.
|
||||
/// - Parameter payload: A payload that contains the values for the model.
|
||||
init(_ payload: Components.Schemas.Tuple) {
|
||||
self.key = payload.key
|
||||
self.name = payload.name
|
||||
|
||||
@@ -1,30 +1,32 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
/// A model that represents a game series.
|
||||
public struct GameSeries: KeyNameModel {
|
||||
|
||||
// TODO: Remove the documentation from the properties of this type as the `--enable-inherited-docs` flag when generating DocC documentation is not working as intended (?).
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// A key.
|
||||
/// The hexadecimal key that uniquely identifies this game series.
|
||||
public let key: String
|
||||
|
||||
/// A name.
|
||||
/// The name of this game series.
|
||||
public let name: String
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this model from a given payload.
|
||||
/// - Parameter payload: A payload that contains the values for the model.
|
||||
init(_ payload: Components.Schemas.Tuple) {
|
||||
self.key = payload.key
|
||||
self.name = payload.name
|
||||
|
||||
+12
-10
@@ -1,19 +1,21 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
|
||||
/// A protocol that defines API clients containing all available endpoints to interact with.
|
||||
protocol APIClient {
|
||||
public protocol AmiiboClient {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
//===----------------------------------------------------------------------===
|
||||
//
|
||||
// This source file is part of the AmiiboService open source project
|
||||
//
|
||||
// Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
// Licensed under the EUPL 1.2 or later.
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 AmiiboAPI project authors
|
||||
// See CONTRIBUTORS for the list of Amiibo Service project authors
|
||||
//
|
||||
//===----------------------------------------------------------------------===
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
// ===----------------------------------------------------------------------===
|
||||
|
||||
import Foundation
|
||||
|
||||
@@ -18,17 +20,14 @@ public struct AmiiboService {
|
||||
// MARK: Properties
|
||||
|
||||
/// A client to interact with the endpoints.
|
||||
private let client: any APIClient
|
||||
private let client: any AmiiboClient
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this service with a specific client type.
|
||||
/// - Parameter client: A representation of a client to use to interact with the endpoints.
|
||||
public init(_ client: AmiiboClient) {
|
||||
self.client = switch client {
|
||||
case let .mock(mockClient): mockClient
|
||||
case let .live(liveClient): liveClient
|
||||
}
|
||||
/// - Parameter client: A client to use to interact with the endpoints.
|
||||
public init(client: some AmiiboClient = AmiiboLiveClient()) {
|
||||
self.client = client
|
||||
}
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
# ===----------------------------------------------------------------------===
|
||||
#
|
||||
# This source file is part of the AmiiboService open source project
|
||||
#
|
||||
# Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
# Licensed under the EUPL 1.2 or later.
|
||||
#
|
||||
# See LICENSE for license information
|
||||
# See CONTRIBUTORS for the list of AmiiboAPI project authors
|
||||
#
|
||||
# ===----------------------------------------------------------------------===
|
||||
## ===----------------------------------------------------------------------===
|
||||
##
|
||||
## 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
|
||||
##
|
||||
## ===----------------------------------------------------------------------===
|
||||
|
||||
generate:
|
||||
- types
|
||||
|
||||
+433
-201
@@ -1,274 +1,391 @@
|
||||
# ===----------------------------------------------------------------------===
|
||||
#
|
||||
# This source file is part of the AmiiboService open source project
|
||||
#
|
||||
# Copyright (c) 2024-2025 Röck+Cöde VoF. and the AmiiboAPI project authors
|
||||
# Licensed under the EUPL 1.2 or later.
|
||||
#
|
||||
# See LICENSE for license information
|
||||
# See CONTRIBUTORS for the list of AmiiboAPI project authors
|
||||
#
|
||||
# ===----------------------------------------------------------------------===
|
||||
## ===----------------------------------------------------------------------===
|
||||
##
|
||||
## 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
|
||||
##
|
||||
## ===----------------------------------------------------------------------===
|
||||
|
||||
openapi: '3.1.0'
|
||||
openapi: '3.1.1'
|
||||
info:
|
||||
title: Amiibo API service
|
||||
description: The Amiibo API RESTful service.
|
||||
version: 1.0.0
|
||||
title: Amiibo API
|
||||
summary: A RESTFul API for Amiibo.
|
||||
description: |
|
||||
# Information
|
||||
|
||||
The [AmiiboAPI](https://www.amiiboapi.org) service is primarily used for educational purposes.
|
||||
|
||||
This is a **reading-only API**. Only HTTP GET method is allowed by this API.
|
||||
**No authentication** is required to use this API. All resources are allowed to access.
|
||||
If you are going to be calling this API regularly. We recommend that you use **caching** on your system.
|
||||
|
||||
# Terms & Conditions
|
||||
|
||||
By using our API, you hereby accepted the following terms and conditions:
|
||||
|
||||
* *This API has no affiliation with Nintendo or any other companies that own the rights to it.*
|
||||
* *Other reports collected by the respective companies that own the rights are not our responsibility.*
|
||||
* *User agrees that the use of this API is entirely at user's own risks.*
|
||||
* *You will require your end users to comply with (and not knowingly enable them to violate) applicable law, regulation, and the Terms.*
|
||||
* *You will comply with all applicable law, regulation, and third party rights (including without limitation laws regarding the import or export of data or software, privacy, and local laws). You will not use the APIs to encourage or promote illegal activity or violation of third party rights.*
|
||||
* *These Terms and Conditions are subject to change without notice, from time to time in our sole discretion.*
|
||||
version: v1.0.0
|
||||
termsOfService: https://www.amiiboapi.org/docs/#termscondition
|
||||
contact:
|
||||
name: FAQ
|
||||
url: https://www.amiiboapi.org/faq/
|
||||
license:
|
||||
name: MIT license
|
||||
identifier: MIT
|
||||
externalDocs:
|
||||
url: https://www.amiiboapi.org/docs
|
||||
description: Amiibo API documentation
|
||||
servers:
|
||||
- url: https://www.amiiboapi.com/api
|
||||
description: Amiibo API service (live)
|
||||
- url: https://www.amiiboapi.org/api
|
||||
description: Live service
|
||||
tags:
|
||||
- name: Amiibo
|
||||
description: Amiibo-related endpoints.
|
||||
- name: Game
|
||||
description: Game-related endpoints.
|
||||
- name: Service
|
||||
description: Service-related endpoints.
|
||||
paths:
|
||||
/amiibo:
|
||||
get:
|
||||
description: Get a list of all the Amiibo items available in the database.
|
||||
summary: Get a list of amiibos.
|
||||
description: |
|
||||
Get a list of all the amiibo items available in the database, optionally filtered by various criteria such as name, type, series, or game.
|
||||
|
||||
Please refer to [the documentation of the endpoint](https://www.amiiboapi.org/docs/#amiibo) for further information.
|
||||
operationId: getAmiibos
|
||||
tags:
|
||||
- Amiibo
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/Identifier'
|
||||
- $ref: '#/components/parameters/IdentifierHead'
|
||||
- $ref: '#/components/parameters/IdentifierTail'
|
||||
- $ref: '#/components/parameters/Name'
|
||||
description: A name of an amiibo to include in the response.
|
||||
- $ref: '#/components/parameters/AmiiboType'
|
||||
- $ref: '#/components/parameters/AmiiboSeries'
|
||||
- $ref: '#/components/parameters/GameCharacter'
|
||||
- $ref: '#/components/parameters/GameSeries'
|
||||
- $ref: '#/components/parameters/ShowGames'
|
||||
- $ref: '#/components/parameters/ShowUsage'
|
||||
responses:
|
||||
'200':
|
||||
description: Successful response returning the object that contains a list of Amiibo items.
|
||||
description: Successful response returning an object that contains zero, one or more amiibos matching the filter criteria.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AmiiboWrapper'
|
||||
'400':
|
||||
description: Bad Amiibo request.
|
||||
parameters:
|
||||
- name: amiiboSeries
|
||||
in: query
|
||||
description: The Amiibo series identifier or name to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: character
|
||||
in: query
|
||||
description: The game character identifier or name to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: gameseries
|
||||
in: query
|
||||
description: The game series identifier or name to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: id
|
||||
in: query
|
||||
description: The Amiibo identifier to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: name
|
||||
in: query
|
||||
description: The Amiibo name to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: showgames
|
||||
in: query
|
||||
description: The flag that indicates whether to include information about related games.
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
style: form
|
||||
- name: showusage
|
||||
in: query
|
||||
description: The flag that indicates whether to include information about Amiibo usage in related games.
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
style: form
|
||||
- name: type
|
||||
in: query
|
||||
description: The Amiibo type to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'404':
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
description: The service is currently unavailable.
|
||||
/amiiboseries:
|
||||
get:
|
||||
description: Get a list of all the Amiibo series available in the database.
|
||||
tags:
|
||||
- Amiibo
|
||||
summary: Get the amiibo series.
|
||||
description: |
|
||||
Get a list of all the amiibo series available in the database, optionally filtered by key or name.
|
||||
|
||||
Please refer to [the documentation of the endpoint](https://www.amiiboapi.org/docs/#series) for further information.
|
||||
operationId: getAmiiboSeries
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/Key'
|
||||
description: A key of an amiibo series to include in the response.
|
||||
- $ref: '#/components/parameters/Name'
|
||||
description: A name of an amiibo series to include in the response.
|
||||
responses:
|
||||
'200':
|
||||
description: Successful response returning the object that contains a list of Amiibo series.
|
||||
description: Successful response returning an object that contains one or more amiibo series matching the filter criteria.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/TupleWrapper'
|
||||
$ref: '#/components/schemas/AmiiboSeriesWrapper'
|
||||
'400':
|
||||
description: Bad Amiibo series request.
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'404':
|
||||
description: Amiibo series not found.
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
description: Service currently not available.
|
||||
parameters:
|
||||
- name: key
|
||||
in: query
|
||||
description: The Amiibo series key to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: name
|
||||
in: query
|
||||
description: The Amiibo series name to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
|
||||
description: The service is currently unavailable.
|
||||
/character:
|
||||
get:
|
||||
description: Get a list of all the game characters available in the database.
|
||||
tags:
|
||||
- Game
|
||||
summary: Get the game characters.
|
||||
description: |
|
||||
Get a list of all the game characters available in the database, optionally filtered by key or name.
|
||||
|
||||
Please refer to [the documentation of the endpoint](https://www.amiiboapi.org/docs/#character) for further information.
|
||||
operationId: getGameCharacters
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/Key'
|
||||
description: A key of a game character to include in the response.
|
||||
- $ref: '#/components/parameters/Name'
|
||||
description: A name of a game character to include in the response.
|
||||
responses:
|
||||
'200':
|
||||
description: Successful response returning the object that contains a list of game characters.
|
||||
description: Successful response returning an object that contains one or more game characters matching the filter criteria.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/TupleWrapper'
|
||||
$ref: '#/components/schemas/GameCharacterWrapper'
|
||||
'400':
|
||||
description: Bad game character request.
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'404':
|
||||
description: Game character not found.
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
description: Service currently not available.
|
||||
parameters:
|
||||
- name: key
|
||||
in: query
|
||||
description: The game character key to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: name
|
||||
in: query
|
||||
description: The game character name to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
|
||||
description: The service is currently unavailable.
|
||||
/gameseries:
|
||||
get:
|
||||
description: Gets a list of all the game series available in the database.
|
||||
tags:
|
||||
- Game
|
||||
summary: Get the game series.
|
||||
description: |
|
||||
Get a list of all the game series available in the database, optionally filtered by key or name.
|
||||
|
||||
Please refer to [the documentation of the endpoint](https://www.amiiboapi.org/docs/#gameSeries) for further information.
|
||||
operationId: getGameSeries
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/Key'
|
||||
description: A key of a game series to include in the response.
|
||||
- $ref: '#/components/parameters/Name'
|
||||
description: A name of a game series to include in the response.
|
||||
responses:
|
||||
'200':
|
||||
description: Successful response returning the object that contains a list of game series.
|
||||
description: Successful response returning an object that contains one or more game series matching the filter criteria.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/TupleWrapper'
|
||||
$ref: '#/components/schemas/GameSeriesWrapper'
|
||||
'400':
|
||||
description: Bad game series request.
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'404':
|
||||
description: Game series not found.
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
description: Service currently not available.
|
||||
parameters:
|
||||
- name: key
|
||||
in: query
|
||||
description: The game series key to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: name
|
||||
in: query
|
||||
description: The game series name to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
|
||||
description: The service is currently unavailable.
|
||||
/type:
|
||||
get:
|
||||
description: Gets a list of all the Amiibo types available in the database.
|
||||
tags:
|
||||
- Amiibo
|
||||
summary: Get the amiibo types.
|
||||
description: |
|
||||
Get a list of all the amiibo types available in the database, optionally filtered by key or name.
|
||||
|
||||
Please refer to [the documentation of the endpoint](https://www.amiiboapi.org/docs/#type) for further information.
|
||||
operationId: getAmiiboTypes
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/Key'
|
||||
description: A key of an amiibo type to include in the response.
|
||||
- $ref: '#/components/parameters/Name'
|
||||
description: A name of an amiibo type to include in the response.
|
||||
responses:
|
||||
'200':
|
||||
description: Successful response returning the object that contains a list of Amiibo types.
|
||||
description: Successful response returning an object that contains one or more amiibo types matching the filter criteria.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/TupleWrapper'
|
||||
$ref: '#/components/schemas/AmiiboTypeWrapper'
|
||||
'400':
|
||||
description: Bad Amiibo type request.
|
||||
$ref: '#/components/responses/BadRequest'
|
||||
'404':
|
||||
description: Amiibo type not found.
|
||||
$ref: '#/components/responses/NotFound'
|
||||
'500':
|
||||
description: Service currently not available.
|
||||
parameters:
|
||||
- name: key
|
||||
in: query
|
||||
description: The Amiibo type key to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
- name: name
|
||||
in: query
|
||||
description: The Amiibo type name to filter the response.
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
style: form
|
||||
|
||||
description: The service is currently unavailable.
|
||||
/lastupdated:
|
||||
get:
|
||||
description: Gets a timestamp when the Amiibo data was last updated.
|
||||
tags:
|
||||
- Service
|
||||
summary: Get the date when data was last updated.
|
||||
description: |
|
||||
Get an ISO-formatted date and time when the amiibo data was last updated.
|
||||
|
||||
Please refer to [the documentation of the endpoint](https://www.amiiboapi.org/docs/#lastUpdated) for further information.
|
||||
operationId: getLastUpdated
|
||||
responses:
|
||||
'200':
|
||||
description: Successful response returning the object that contains the date and time when the database was last updated.
|
||||
description: Successful response returning an object that contains the date and time when the database was last updated.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/LastUpdated'
|
||||
|
||||
'500':
|
||||
description: The service is currently unavailable.
|
||||
components:
|
||||
parameters:
|
||||
AmiiboSeries:
|
||||
description: A hexadecimal key or name of an amiibo series to include in the response.
|
||||
name: amiiboSeries
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
AmiiboType:
|
||||
description: A hexadecimal key or name of an amiibo type to include in the response.
|
||||
name: type
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
GameCharacter:
|
||||
description: A hexadecimal key or name of a game character to include in the response.
|
||||
name: character
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
GameSeries:
|
||||
description: A hexadecimal key or name of a game series to include in the response.
|
||||
name: gameseries
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
Identifier:
|
||||
description: The full 16-character hexadecimal identifier of an amiibo to include in the response.
|
||||
name: id
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
maxLength: 18
|
||||
IdentifierHead:
|
||||
description: The first 8 hexadecimal characters of an amiibo identifier to include in the response.
|
||||
name: head
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
maxLength: 10
|
||||
IdentifierTail:
|
||||
description: The last 8 hexadecimal characters of an amiibo identifier to include in the response.
|
||||
name: tail
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
maxLength: 10
|
||||
Key:
|
||||
description: A hexadecimal key to filter the results by.
|
||||
name: key
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
Name:
|
||||
description: A name to filter the results by.
|
||||
name: name
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: string
|
||||
ShowGames:
|
||||
description: A flag that indicates whether to include information about related games.
|
||||
name: showgames
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
ShowUsage:
|
||||
description: A flag that indicates whether to include information about amiibo usages in related games.
|
||||
name: showusage
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
responses:
|
||||
BadRequest:
|
||||
description: The request was malformed or contained invalid parameters.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ServiceError'
|
||||
NotFound:
|
||||
description: No results were found matching the given filter criteria.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ServiceError'
|
||||
schemas:
|
||||
# Core Entities
|
||||
Amiibo:
|
||||
description: A type that represents an amiibo figurine, card, or other collectible.
|
||||
type: object
|
||||
properties:
|
||||
amiiboSeries:
|
||||
description: The name of the amiibo series this amiibo belongs to.
|
||||
type: string
|
||||
character:
|
||||
description: |
|
||||
The name of the game character associated with this amiibo.
|
||||
|
||||
Multiple characters can have different amiibo designs.
|
||||
type: string
|
||||
gameSeries:
|
||||
description: The name of the game series associated with this amiibo.
|
||||
type: string
|
||||
games3DS:
|
||||
description: A list of 3DS games an amiibo could be used in, if any.
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/AmiiboGame'
|
||||
gamesSwitch:
|
||||
description: A list of Switch games an amiibo could be used in, if any.
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/AmiiboGame'
|
||||
gamesSwitch2:
|
||||
description: A list of Switch 2 games an amiibo could be used in, if any.
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/AmiiboGame'
|
||||
gamesWiiU:
|
||||
description: A list of Wii U games an amiibo could be used in, if any.
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/AmiiboGame'
|
||||
head:
|
||||
description: |
|
||||
The first 8 characters of the hexadecimal value that identifies an amiibo.
|
||||
|
||||
The positions 0 to 7 of the hexadecimal string.
|
||||
type: string
|
||||
pattern: "^[0-9a-fA-F]+$"
|
||||
minLength: 8
|
||||
maxLength: 8
|
||||
image:
|
||||
description: A URL pointing to an image of this amiibo.
|
||||
type: string
|
||||
format: uri
|
||||
name:
|
||||
description: The name of this amiibo.
|
||||
type: string
|
||||
release:
|
||||
type: object
|
||||
description: The regional release dates of this amiibo, if known.
|
||||
$ref: '#/components/schemas/AmiiboRelease'
|
||||
tail:
|
||||
description: |
|
||||
The last 8 characters of the hexadecimal value that identifies an amiibo.
|
||||
|
||||
The positions 8 to 15 of the hexadecimal string.
|
||||
type: string
|
||||
pattern: "^[0-9a-fA-F]+$"
|
||||
minLength: 8
|
||||
maxLength: 8
|
||||
type:
|
||||
description: The type of this amiibo (e.g., Figure, Card, Yarn, Band).
|
||||
type: string
|
||||
required:
|
||||
- amiiboSeries
|
||||
@@ -280,97 +397,212 @@ components:
|
||||
- release
|
||||
- tail
|
||||
- type
|
||||
|
||||
AmiiboGame:
|
||||
description: A type that represents a game in which an amiibo can be used.
|
||||
type: object
|
||||
properties:
|
||||
amiiboUsage:
|
||||
description: A list of available usages an amiibo has in a game, if any.
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/AmiiboUsage'
|
||||
gameID:
|
||||
description: A list of identifiers for the game.
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
gameName:
|
||||
description: The name of the game.
|
||||
type: string
|
||||
required:
|
||||
- gameID
|
||||
- gameName
|
||||
|
||||
AmiiboList:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Amiibo'
|
||||
|
||||
AmiiboRelease:
|
||||
description: A type that contains the regional release dates of an amiibo.
|
||||
type: object
|
||||
properties:
|
||||
au:
|
||||
description: The release date in Australia, if known.
|
||||
type: string
|
||||
format: date-time
|
||||
eu:
|
||||
description: The release date in Europe, if known.
|
||||
type: string
|
||||
format: date-time
|
||||
jp:
|
||||
description: The release date in Japan, if known.
|
||||
type: string
|
||||
format: date-time
|
||||
na:
|
||||
description: The release date in North America, if known.
|
||||
type: string
|
||||
format: date-time
|
||||
|
||||
AmiiboSeries:
|
||||
description: A type that represents an amiibo series.
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/Tuple'
|
||||
- type: object
|
||||
properties:
|
||||
key:
|
||||
description: The hexadecimal key that uniquely identifies this amiibo series.
|
||||
name:
|
||||
description: The name of this amiibo series.
|
||||
AmiiboType:
|
||||
description: A type that represents an amiibo type (e.g., Figure, Card, Yarn, Band).
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/Tuple'
|
||||
- type: object
|
||||
properties:
|
||||
key:
|
||||
description: The hexadecimal key that uniquely identifies this amiibo type.
|
||||
name:
|
||||
description: The name of this amiibo type.
|
||||
AmiiboUsage:
|
||||
description: A type that represents how an amiibo is used within a game.
|
||||
type: object
|
||||
properties:
|
||||
Usage:
|
||||
description: A description of how the amiibo is used within the game.
|
||||
type: string
|
||||
write:
|
||||
description: A flag that indicates whether the amiibo can save game data.
|
||||
type: boolean
|
||||
required:
|
||||
- Usage
|
||||
- write
|
||||
|
||||
AmiiboWrapper:
|
||||
type: object
|
||||
properties:
|
||||
amiibo:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/Amiibo'
|
||||
- $ref: '#/components/schemas/AmiiboList'
|
||||
required:
|
||||
- amiibo
|
||||
|
||||
GameCharacter:
|
||||
description: A type that represents a game character.
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/Tuple'
|
||||
- type: object
|
||||
properties:
|
||||
key:
|
||||
description: The hexadecimal key that uniquely identifies this game character.
|
||||
name:
|
||||
description: The name of this game character.
|
||||
GameSeries:
|
||||
description: A type that represents a game series.
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/Tuple'
|
||||
- type: object
|
||||
properties:
|
||||
key:
|
||||
description: The hexadecimal key that uniquely identifies this game series.
|
||||
name:
|
||||
description: The name of this game series.
|
||||
LastUpdated:
|
||||
description: A type that contains the date and time when the service data was last updated.
|
||||
type: object
|
||||
properties:
|
||||
lastUpdated:
|
||||
description: The date and time when the data in the database was last updated.
|
||||
type: string
|
||||
format: date-time
|
||||
required:
|
||||
- lastUpdated
|
||||
|
||||
Tuple:
|
||||
description: |
|
||||
A base type composed of a `key` and `name` pair.
|
||||
|
||||
This type is the base schema for the `AmiiboSeries`, `AmiiboType`, `GameCharacter`, and `GameSeries` types.
|
||||
type: object
|
||||
properties:
|
||||
key:
|
||||
description: A hexadecimal key that uniquely identifies this resource.
|
||||
type: string
|
||||
pattern: "^0x[0-9a-fA-F]+$"
|
||||
minLength: 3
|
||||
name:
|
||||
description: A display name for this resource.
|
||||
type: string
|
||||
required:
|
||||
- key
|
||||
- name
|
||||
|
||||
TupleList:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Tuple'
|
||||
|
||||
TupleWrapper:
|
||||
# Wrapper Entities
|
||||
AmiiboWrapper:
|
||||
description: A response wrapper that contains zero, one, or more amiibos.
|
||||
type: object
|
||||
properties:
|
||||
amiibo:
|
||||
amiibo:
|
||||
description: A container that holds zero, one or more amiibos.
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/Tuple'
|
||||
- $ref: '#/components/schemas/TupleList'
|
||||
required:
|
||||
- $ref: '#/components/schemas/Amiibo'
|
||||
description: A certain amiibo.
|
||||
- type: array
|
||||
description: A list that contains amiibos.
|
||||
items:
|
||||
$ref: '#/components/schemas/Amiibo'
|
||||
AmiiboSeriesWrapper:
|
||||
description: A response wrapper that contains one or more amiibo series.
|
||||
type: object
|
||||
properties:
|
||||
amiibo:
|
||||
description: A container that holds one or more amiibo series.
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/AmiiboSeries'
|
||||
description: A certain amiibo series.
|
||||
- type: array
|
||||
description: A list that contains amiibo series.
|
||||
items:
|
||||
$ref: '#/components/schemas/AmiiboSeries'
|
||||
required:
|
||||
- amiibo
|
||||
AmiiboTypeWrapper:
|
||||
description: A response wrapper that contains one or more amiibo types.
|
||||
type: object
|
||||
properties:
|
||||
amiibo:
|
||||
description: A container that holds one or more amiibo types.
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/AmiiboType'
|
||||
description: A certain amiibo type.
|
||||
- type: array
|
||||
description: A list that contains amiibo types.
|
||||
items:
|
||||
$ref: '#/components/schemas/AmiiboType'
|
||||
required:
|
||||
- amiibo
|
||||
GameCharacterWrapper:
|
||||
description: A response wrapper that contains one or more game characters.
|
||||
type: object
|
||||
properties:
|
||||
amiibo:
|
||||
description: A container that holds one or more game characters.
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/GameCharacter'
|
||||
description: A certain game character.
|
||||
- type: array
|
||||
description: A list that contains game characters.
|
||||
items:
|
||||
$ref: '#/components/schemas/GameCharacter'
|
||||
required:
|
||||
- amiibo
|
||||
GameSeriesWrapper:
|
||||
description: A response wrapper that contains one or more game series.
|
||||
type: object
|
||||
properties:
|
||||
amiibo:
|
||||
description: A container that holds one or more game series.
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/GameSeries'
|
||||
description: A certain game series.
|
||||
- type: array
|
||||
description: A list that contains game series.
|
||||
items:
|
||||
$ref: '#/components/schemas/GameSeries'
|
||||
required:
|
||||
- amiibo
|
||||
# Error Entities
|
||||
ServiceError:
|
||||
description: A type that represents an error response from the service.
|
||||
type: object
|
||||
properties:
|
||||
code:
|
||||
description: The HTTP status code of the error.
|
||||
type: integer
|
||||
error:
|
||||
description: A human-readable message describing the error.
|
||||
type: string
|
||||
required:
|
||||
- code
|
||||
- error
|
||||
|
||||
@@ -0,0 +1,703 @@
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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("Amiibo Service", .tags(.live))
|
||||
struct AmiiboServiceLiveTests {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
private let service: AmiiboService
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
init() {
|
||||
self.service = .init()
|
||||
}
|
||||
|
||||
// MARK: Functions tests
|
||||
|
||||
#if swift(>=6.2)
|
||||
@Test(arguments: zip(
|
||||
Input.amiibos,
|
||||
Output.amiibos
|
||||
))
|
||||
func `get amiibos`(
|
||||
filter: AmiiboFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertAmiibos(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.amiibosThrows,
|
||||
Output.amiibosThrows
|
||||
))
|
||||
func `get amiibos throws`(
|
||||
filter: AmiiboFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsAmiibosThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.amiiboSeries,
|
||||
Output.amiiboSeries
|
||||
))
|
||||
func `get amiibo series`(
|
||||
filter: AmiiboSeriesFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertAmiiboSeries(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.amiiboSeriesThrows,
|
||||
Output.amiiboSeriesThrows
|
||||
))
|
||||
func `get amiibo series throws`(
|
||||
filter: AmiiboSeriesFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsAmiiboSeriesThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.amiiboTypes,
|
||||
Output.amiiboTypes
|
||||
))
|
||||
func `get amiibo types`(
|
||||
filter: AmiiboTypeFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertAmiiboTypes(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.amiiboTypesThrows,
|
||||
Output.amiiboTypesThrows
|
||||
))
|
||||
func `get amiibo types throws`(
|
||||
filter: AmiiboTypeFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsAmiiboTypesThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.gameCharacters,
|
||||
Output.gameCharacters
|
||||
))
|
||||
func `get game characters`(
|
||||
filter: GameCharacterFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertGameCharacters(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.gameCharactersThrows,
|
||||
Output.gameCharactersThrows
|
||||
))
|
||||
func `get game characters throws`(
|
||||
filter: GameCharacterFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsGameCharactersThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.gameSeries,
|
||||
Output.gameSeries
|
||||
))
|
||||
func `get game series`(
|
||||
filter: GameSeriesFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertGameSeries(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test(arguments: zip(
|
||||
Input.gameSeriesThrows,
|
||||
Output.gameSeriesThrows
|
||||
))
|
||||
func `get game series throws`(
|
||||
filter: GameSeriesFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsGameSeriesThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
func `get the last updated timestamp`() async throws {
|
||||
try await assertLastUpdated(
|
||||
day: 26,
|
||||
month: 3,
|
||||
year: 2026
|
||||
)
|
||||
}
|
||||
#else
|
||||
@Test("get amiibos", arguments: zip(
|
||||
Input.amiibos,
|
||||
Output.amiibos
|
||||
))
|
||||
func getAmiibos(
|
||||
filter: AmiiboFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertAmiibos(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get amiibos throws", arguments: zip(
|
||||
Input.amiibosThrows,
|
||||
Output.amiibosThrows
|
||||
))
|
||||
func getAmiibosThrows(
|
||||
filter: AmiiboFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsAmiibosThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get amiibo series", arguments: zip(
|
||||
Input.amiiboSeries,
|
||||
Output.amiiboSeries
|
||||
))
|
||||
func getAmiiboSeries(
|
||||
filter: AmiiboSeriesFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertAmiiboSeries(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get amiibo series throws", arguments: zip(
|
||||
Input.amiiboSeriesThrows,
|
||||
Output.amiiboSeriesThrows
|
||||
))
|
||||
func getAmiiboSeriesThrows(
|
||||
filter: AmiiboSeriesFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsAmiiboSeriesThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get amiibo types", arguments: zip(
|
||||
Input.amiiboTypes,
|
||||
Output.amiiboTypes
|
||||
))
|
||||
func getAmiiboTypes(
|
||||
filter: AmiiboTypeFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertAmiiboTypes(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get amiibo types throws", arguments: zip(
|
||||
Input.amiiboTypesThrows,
|
||||
Output.amiiboTypesThrows
|
||||
))
|
||||
func getAmiiboTypesThrows(
|
||||
filter: AmiiboTypeFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsAmiiboTypesThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get game characters", arguments: zip(
|
||||
Input.gameCharacters,
|
||||
Output.gameCharacters
|
||||
))
|
||||
func getGameCharacters(
|
||||
filter: GameCharacterFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertGameCharacters(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get game characters throws", arguments: zip(
|
||||
Input.gameCharactersThrows,
|
||||
Output.gameCharactersThrows
|
||||
))
|
||||
func getGameCharactersThrows(
|
||||
filter: GameCharacterFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsGameCharactersThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get game series", arguments: zip(
|
||||
Input.gameSeries,
|
||||
Output.gameSeries
|
||||
))
|
||||
func getGameSeries(
|
||||
filter: GameSeriesFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
try await assertGameSeries(
|
||||
with: filter,
|
||||
expects: numberOfItems
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get game series throws", arguments: zip(
|
||||
Input.gameSeriesThrows,
|
||||
Output.gameSeriesThrows
|
||||
))
|
||||
func getGameSeriesThrows(
|
||||
filter: GameSeriesFilter,
|
||||
expects error: AmiiboServiceError
|
||||
) async throws {
|
||||
try await assertsGameSeriesThrows(
|
||||
error: error,
|
||||
when: filter
|
||||
)
|
||||
}
|
||||
|
||||
@Test("get last updated timestamp")
|
||||
func getLastUpdated() async throws {
|
||||
try await assertLastUpdated(
|
||||
day: 26,
|
||||
month: 3,
|
||||
year: 2026
|
||||
)
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Assertions
|
||||
|
||||
private extension AmiiboServiceLiveTests {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
/// Asserts the number of items returned by the `amiibos` endpoint that matched a given filter.
|
||||
/// - Parameters:
|
||||
/// - filter: An amiibo filter type.
|
||||
/// - numberOfItems: An expected number of items returned.
|
||||
func assertAmiibos(
|
||||
with filter: AmiiboFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
let amiibos = try await service.getAmiibos(filter)
|
||||
|
||||
// THEN
|
||||
#expect(amiibos.count == numberOfItems)
|
||||
|
||||
guard
|
||||
!amiibos.isEmpty,
|
||||
(filter.showGames == true || filter.showUsage == true)
|
||||
else { return }
|
||||
|
||||
let firstAmiiboPlatform = try #require(amiibos.first?.platform)
|
||||
|
||||
#expect(amiibos.last?.platform != nil)
|
||||
|
||||
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.threeDS.first?.usages?.isEmpty == false)
|
||||
#expect(firstAmiiboPlatform.wiiU.first?.usages?.isEmpty == false)
|
||||
}
|
||||
}
|
||||
|
||||
/// Asserts the error thrown by the `amiibos` endpoint.
|
||||
/// - Parameters:
|
||||
/// - error: An expected error.
|
||||
/// - filter: An amiibo filter type.
|
||||
func assertsAmiibosThrows(
|
||||
error: AmiiboServiceError,
|
||||
when filter: AmiiboFilter
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getAmiibos(filter)
|
||||
}
|
||||
}
|
||||
|
||||
/// Asserts the number of items returned by the `amiiboSeries` endpoint that matched a given filter.
|
||||
/// - Parameters:
|
||||
/// - filter: An amiibo series filter type.
|
||||
/// - numberOfItems: An expected number of items returned.
|
||||
func assertAmiiboSeries(
|
||||
with filter: AmiiboSeriesFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
let amiiboSeries = try await service.getAmiiboSeries(filter)
|
||||
|
||||
// THEN
|
||||
#expect(amiiboSeries.count == numberOfItems)
|
||||
}
|
||||
|
||||
/// Asserts the error thrown by the `amiiboSeries` endpoint.
|
||||
/// - Parameters:
|
||||
/// - error: An expected error.
|
||||
/// - filter: An amiibo series filter type.
|
||||
func assertsAmiiboSeriesThrows(
|
||||
error: AmiiboServiceError,
|
||||
when filter: AmiiboSeriesFilter
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getAmiiboSeries(filter)
|
||||
}
|
||||
}
|
||||
|
||||
/// Asserts the number of items returned by the `amiiboTypes` endpoint that matched a given filter.
|
||||
/// - Parameters:
|
||||
/// - filter: An amiibo type filter type.
|
||||
/// - numberOfItems: An expected number of items returned.
|
||||
func assertAmiiboTypes(
|
||||
with filter: AmiiboTypeFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
let amiiboTypes = try await service.getAmiiboTypes(filter)
|
||||
|
||||
// THEN
|
||||
#expect(amiiboTypes.count == numberOfItems)
|
||||
}
|
||||
|
||||
/// Asserts the error thrown by the `amiiboTypes` endpoint.
|
||||
/// - Parameters:
|
||||
/// - error: An expected error.
|
||||
/// - filter: An amiibo type filter type.
|
||||
func assertsAmiiboTypesThrows(
|
||||
error: AmiiboServiceError,
|
||||
when filter: AmiiboTypeFilter
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getAmiiboTypes(filter)
|
||||
}
|
||||
}
|
||||
|
||||
/// Asserts the number of items returned by the `gameCharacters` endpoint that matched a given filter.
|
||||
/// - Parameters:
|
||||
/// - filter: A game character filter type.
|
||||
/// - numberOfItems: An expected number of items returned.
|
||||
func assertGameCharacters(
|
||||
with filter: GameCharacterFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
let gameCharacters = try await service.getGameCharacters(filter)
|
||||
|
||||
// THEN
|
||||
#expect(gameCharacters.count == numberOfItems)
|
||||
}
|
||||
|
||||
/// Asserts the error thrown by the `gameCharacters` endpoint.
|
||||
/// - Parameters:
|
||||
/// - error: An expected error.
|
||||
/// - filter: A game character filter type.
|
||||
func assertsGameCharactersThrows(
|
||||
error: AmiiboServiceError,
|
||||
when filter: GameCharacterFilter
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getGameCharacters(filter)
|
||||
}
|
||||
}
|
||||
|
||||
/// Asserts the number of items returned by the `gameSeries` endpoint that matched a given filter.
|
||||
/// - Parameters:
|
||||
/// - filter: A game series filter type.
|
||||
/// - numberOfItems: An expected number of items returned.
|
||||
func assertGameSeries(
|
||||
with filter: GameSeriesFilter,
|
||||
expects numberOfItems: Int
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
let gameSeries = try await service.getGameSeries(filter)
|
||||
|
||||
// THEN
|
||||
#expect(gameSeries.count == numberOfItems)
|
||||
}
|
||||
|
||||
/// Asserts the error thrown by the `gameSeries` endpoint.
|
||||
/// - Parameters:
|
||||
/// - error: An expected error.
|
||||
/// - filter: A game series filter type.
|
||||
func assertsGameSeriesThrows(
|
||||
error: AmiiboServiceError,
|
||||
when filter: GameSeriesFilter
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getGameSeries(filter)
|
||||
}
|
||||
}
|
||||
|
||||
/// Asserts the date returned by the `lastUpdated` endpoint.
|
||||
/// - Parameters:
|
||||
/// - day: A number of day of the last updated date.
|
||||
/// - month: A number of month of the last updated date.
|
||||
/// - year: A number of year of the last updated date.
|
||||
func assertLastUpdated(
|
||||
day: Int,
|
||||
month: Int,
|
||||
year: Int
|
||||
) async throws {
|
||||
// GIVEN
|
||||
// WHEN
|
||||
let dateLastUpdated = try await service.getLastUpdated()
|
||||
|
||||
// THEN
|
||||
let dateComponents = Calendar.current.dateComponents(
|
||||
[.year, .month, .day],
|
||||
from: dateLastUpdated
|
||||
)
|
||||
|
||||
#expect(dateComponents.year == year)
|
||||
#expect(dateComponents.month == month)
|
||||
#expect(dateComponents.day == day)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Arguments
|
||||
|
||||
enum Input {
|
||||
/// A list of amiibo filters to input to the `assertAmiibos` assertion.
|
||||
static let amiibos: [AmiiboFilter] = [
|
||||
.init(),
|
||||
.init(head: "00000000"),
|
||||
.init(head: "0000"),
|
||||
.init(tail: "00000002"),
|
||||
.init(tail: "0002"),
|
||||
.init(identifier: "0000000000000002"),
|
||||
.init(identifier: "0000000000000000"),
|
||||
.init(identifier: "0000000"),
|
||||
.init(name: "zelda"),
|
||||
.init(name: "Something"),
|
||||
.init(name: "zel"),
|
||||
.init(name: .empty),
|
||||
.init(type: "0x00"),
|
||||
.init(type: "Figure"),
|
||||
.init(type: "0x0f"),
|
||||
.init(type: "something"),
|
||||
.init(type: "fig"),
|
||||
.init(type: .empty),
|
||||
.init(series: "0x00"),
|
||||
.init(series: "Legend of Zelda"),
|
||||
.init(series: "0xf9"),
|
||||
.init(series: "something"),
|
||||
.init(series: "fig"),
|
||||
.init(series: .empty),
|
||||
.init(gameCharacter: "0x00"),
|
||||
.init(gameCharacter: "Zelda"),
|
||||
.init(gameCharacter: "0xf9"),
|
||||
.init(gameCharacter: "something"),
|
||||
.init(gameCharacter: "fig"),
|
||||
.init(gameCharacter: .empty),
|
||||
.init(gameSeries: "0x00"),
|
||||
.init(gameSeries: "Legend of Zelda"),
|
||||
.init(gameSeries: "0xf9"),
|
||||
.init(gameSeries: "something"),
|
||||
.init(gameSeries: "Super"),
|
||||
.init(gameSeries: .empty),
|
||||
.init(showGames: true),
|
||||
.init(showUsage: true)
|
||||
]
|
||||
/// A list of amiibo series filters to input to the `assertAmiibosThrows` assertion.
|
||||
static let amiibosThrows: [AmiiboFilter] = [
|
||||
.init(head: .empty),
|
||||
.init(tail: .empty),
|
||||
.init(identifier: .empty),
|
||||
.init(type: "0x"),
|
||||
.init(series: "0x"),
|
||||
.init(gameCharacter: "0x"),
|
||||
.init(gameSeries: "0x"),
|
||||
]
|
||||
/// A list of amiibo series filters to input to the `assertAmiiboSeries` assertion.
|
||||
static let amiiboSeries: [AmiiboSeriesFilter] = [
|
||||
.init(),
|
||||
.init(key: "0x01"),
|
||||
.init(name: "Legend of Zelda"),
|
||||
.init(name: "Zelda"),
|
||||
.init(name: .empty)
|
||||
]
|
||||
/// A list of amiibo series filters to input to the `assertAmiiboSeriesThrows` assertion.
|
||||
static let amiiboSeriesThrows: [AmiiboSeriesFilter] = [
|
||||
.init(key: "0xf9"),
|
||||
.init(key: "0x"),
|
||||
.init(key: .empty),
|
||||
.init(name: "Something")
|
||||
]
|
||||
/// A list of amiibo type filters to input to the `assertAmiiboTypes` assertion.
|
||||
static let amiiboTypes: [AmiiboTypeFilter] = [
|
||||
.init(),
|
||||
.init(key: "0x01"),
|
||||
.init(name: "Card"),
|
||||
.init(name: "Ca"),
|
||||
.init(name: .empty)
|
||||
]
|
||||
/// A list of amiibo type filters to input to the `assertAmiiboTypesThrows` assertion.
|
||||
static let amiiboTypesThrows: [AmiiboTypeFilter] = [
|
||||
.init(key: "0x09"),
|
||||
.init(key: "0x"),
|
||||
.init(key: .empty),
|
||||
.init(name: "Something")
|
||||
]
|
||||
/// A list of game character filters to input to the `assertGameCharacters` assertion.
|
||||
static let gameCharacters: [GameCharacterFilter] = [
|
||||
.init(),
|
||||
.init(key: "0x0001"),
|
||||
.init(name: "Zelda"),
|
||||
.init(name: "Zeld"),
|
||||
.init(name: .empty)
|
||||
]
|
||||
/// A list of game character filters to input to the `assertGameCharactersThrows` assertion.
|
||||
static let gameCharactersThrows: [GameCharacterFilter] = [
|
||||
.init(key: "0xffff"),
|
||||
.init(key: "0x"),
|
||||
.init(key: .empty),
|
||||
.init(name: "Something")
|
||||
]
|
||||
/// A list of game series filters to input to the `assertGameSeries` assertion.
|
||||
static let gameSeries: [GameSeriesFilter] = [
|
||||
.init(),
|
||||
.init(key: "0x001"),
|
||||
.init(name: "Pikmin"),
|
||||
.init(name: "Pik"),
|
||||
.init(name: .empty)
|
||||
]
|
||||
/// A list of game series filters to input to the `assertGameSeriesThrows` assertion.
|
||||
static let gameSeriesThrows: [GameSeriesFilter] = [
|
||||
.init(key: "0xffff"),
|
||||
.init(key: "0x"),
|
||||
.init(key: .empty),
|
||||
.init(name: "Something")
|
||||
]
|
||||
}
|
||||
|
||||
enum Output {
|
||||
/// A list of number of items that are expected from the `assertAmiibos` assertion.
|
||||
static let amiibos: [Int] = [.totalAmiibos, 7, 7, 1, 1, 1, .zero, .zero, 5, .zero, 7, .totalAmiibos, 247, 247, .zero, .zero, .zero, .zero, 96, 26, .zero, .zero, 63, .totalAmiibos, 13, 6, .zero, .zero, .zero, .totalAmiibos, 51, 32, .zero, .zero, 150, .totalAmiibos, .totalAmiibos, .totalAmiibos]
|
||||
/// A list of errors are expected to be thrown from the `assertAmiibosThrows` assertion.
|
||||
static let amiibosThrows: [AmiiboServiceError] = [.badRequest, .badRequest, .badRequest, .badRequest, .badRequest, .badRequest, .badRequest]
|
||||
/// A list of number of items that are expected from the `assertAmiiboSeries` assertion.
|
||||
static let amiiboSeries: [Int] = [.totalAmiiboSeries, 1, 1, 1, .totalAmiiboSeries]
|
||||
/// A list of errors are expected to be thrown from the `assertAmiiboSeriesThrows` assertion.
|
||||
static let amiiboSeriesThrows: [AmiiboServiceError] = [.notFound, .badRequest, .badRequest, .notFound]
|
||||
/// A list of number of items that are expected from the `assertAmiiboTypes` assertion.
|
||||
static let amiiboTypes: [Int] = [.totalAmiiboTypes, 1, 1, 1, .totalAmiiboTypes]
|
||||
/// A list of errors are expected to be thrown from the `assertAmiiboTypesThrows` assertion.
|
||||
static let amiiboTypesThrows: [AmiiboServiceError] = [.notFound, .badRequest, .badRequest, .notFound]
|
||||
/// A list of number of items that are expected from the `assertGameCharacters` assertion.
|
||||
static let gameCharacters: [Int] = [.totalGameCharacters, 1, 1, 1, .totalGameCharacters]
|
||||
/// A list of errors are expected to be thrown from the `assertGameCharactersThrows` assertion.
|
||||
static let gameCharactersThrows: [AmiiboServiceError] = [.notFound, .badRequest, .badRequest, .notFound]
|
||||
/// A list of number of items that are expected from the `assertGameSeries` assertion.
|
||||
static let gameSeries: [Int] = [.totalGameSeries, 1, 1, 1, .totalGameSeries]
|
||||
/// A list of errors are expected to be thrown from the `assertGameSeriesThrows` assertion.
|
||||
static let gameSeriesThrows: [AmiiboServiceError] = [.notFound, .badRequest, .badRequest, .notFound]
|
||||
}
|
||||
|
||||
// MARK: - Constants
|
||||
|
||||
private extension Int {
|
||||
/// A number that represents the total number of amiibo items currently available at the live service.
|
||||
static let totalAmiibos = 939
|
||||
/// A number that represents the total number of amiibo series currently available at the live service.
|
||||
static let totalAmiiboSeries = 30
|
||||
/// A number that represents the total number of amiibo types currently available at the live service.
|
||||
static let totalAmiiboTypes = 5
|
||||
/// A number that represents the total number of game characters currently available at the live service.
|
||||
static let totalGameCharacters = 680
|
||||
/// A number that represents the total number of game series currently available at the live service.
|
||||
static let totalGameSeries = 117
|
||||
}
|
||||
|
||||
private extension String {
|
||||
/// An empty string.
|
||||
static let empty = ""
|
||||
}
|
||||
@@ -0,0 +1,266 @@
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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("Amiibo Service [Mock]", .tags(.mock))
|
||||
struct AmiiboServiceMockTests {
|
||||
|
||||
// MARK: Get Amiibos tests
|
||||
|
||||
@Test("returns empty amiibos when mock provides an empty list")
|
||||
func getAmiibosEmpty() async throws {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(amiibos: []))
|
||||
|
||||
// WHEN
|
||||
let amiibos = try await service.getAmiibos()
|
||||
|
||||
// THEN
|
||||
#expect(amiibos.isEmpty)
|
||||
}
|
||||
|
||||
@Test("throws notFound when mock provides no amiibos")
|
||||
func getAmiibosNotFound() async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient())
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: AmiiboServiceError.notFound) {
|
||||
try await service.getAmiibos()
|
||||
}
|
||||
}
|
||||
|
||||
@Test("throws error for amiibos when mock is configured with error", arguments: Errors.all)
|
||||
func getAmiibosThrows(error: AmiiboServiceError) async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(error: error))
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getAmiibos()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Get Amiibo Series tests
|
||||
|
||||
@Test("returns empty amiibo series when mock provides an empty list")
|
||||
func getAmiiboSeriesEmpty() async throws {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(amiiboSeries: []))
|
||||
|
||||
// WHEN
|
||||
let amiiboSeries = try await service.getAmiiboSeries()
|
||||
|
||||
// THEN
|
||||
#expect(amiiboSeries.isEmpty)
|
||||
}
|
||||
|
||||
@Test("throws notFound when mock provides no amiibo series")
|
||||
func getAmiiboSeriesNotFound() async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient())
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: AmiiboServiceError.notFound) {
|
||||
try await service.getAmiiboSeries()
|
||||
}
|
||||
}
|
||||
|
||||
@Test("throws error for amiibo series when mock is configured with error", arguments: Errors.all)
|
||||
func getAmiiboSeriesThrows(error: AmiiboServiceError) async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(error: error))
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getAmiiboSeries()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Get Amiibo Types tests
|
||||
|
||||
@Test("returns empty amiibo types when mock provides an empty list")
|
||||
func getAmiiboTypesEmpty() async throws {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(amiiboTypes: []))
|
||||
|
||||
// WHEN
|
||||
let amiiboTypes = try await service.getAmiiboTypes()
|
||||
|
||||
// THEN
|
||||
#expect(amiiboTypes.isEmpty)
|
||||
}
|
||||
|
||||
@Test("throws notFound when mock provides no amiibo types")
|
||||
func getAmiiboTypesNotFound() async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient())
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: AmiiboServiceError.notFound) {
|
||||
try await service.getAmiiboTypes()
|
||||
}
|
||||
}
|
||||
|
||||
@Test("throws error for amiibo types when mock is configured with error", arguments: Errors.all)
|
||||
func getAmiiboTypesThrows(error: AmiiboServiceError) async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(error: error))
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getAmiiboTypes()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Get Game Characters tests
|
||||
|
||||
@Test("returns empty game characters when mock provides an empty list")
|
||||
func getGameCharactersEmpty() async throws {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(gameCharacters: []))
|
||||
|
||||
// WHEN
|
||||
let gameCharacters = try await service.getGameCharacters()
|
||||
|
||||
// THEN
|
||||
#expect(gameCharacters.isEmpty)
|
||||
}
|
||||
|
||||
@Test("throws notFound when mock provides no game characters")
|
||||
func getGameCharactersNotFound() async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient())
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: AmiiboServiceError.notFound) {
|
||||
try await service.getGameCharacters()
|
||||
}
|
||||
}
|
||||
|
||||
@Test("throws error for game characters when mock is configured with error", arguments: Errors.all)
|
||||
func getGameCharactersThrows(error: AmiiboServiceError) async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(error: error))
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getGameCharacters()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Get Game Series tests
|
||||
|
||||
@Test("returns empty game series when mock provides an empty list")
|
||||
func getGameSeriesEmpty() async throws {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(gameSeries: []))
|
||||
|
||||
// WHEN
|
||||
let gameSeries = try await service.getGameSeries()
|
||||
|
||||
// THEN
|
||||
#expect(gameSeries.isEmpty)
|
||||
}
|
||||
|
||||
@Test("throws notFound when mock provides no game series")
|
||||
func getGameSeriesNotFound() async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient())
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: AmiiboServiceError.notFound) {
|
||||
try await service.getGameSeries()
|
||||
}
|
||||
}
|
||||
|
||||
@Test("throws error for game series when mock is configured with error", arguments: Errors.all)
|
||||
func getGameSeriesThrows(error: AmiiboServiceError) async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(error: error))
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getGameSeries()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Get Last Updated tests
|
||||
|
||||
@Test("returns date when mock provides a last updated date")
|
||||
func getLastUpdated() async throws {
|
||||
// GIVEN
|
||||
let expectedDate = Date(timeIntervalSince1970: 1_700_000_000)
|
||||
let service = AmiiboService(client: AmiiboMockClient(lastUpdated: expectedDate))
|
||||
|
||||
// WHEN
|
||||
let lastUpdated = try await service.getLastUpdated()
|
||||
|
||||
// THEN
|
||||
#expect(lastUpdated == expectedDate)
|
||||
}
|
||||
|
||||
@Test("throws notFound when mock provides no last updated date")
|
||||
func getLastUpdatedNotFound() async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient())
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: AmiiboServiceError.notFound) {
|
||||
try await service.getLastUpdated()
|
||||
}
|
||||
}
|
||||
|
||||
@Test("throws error for last updated when mock is configured with error", arguments: Errors.all)
|
||||
func getLastUpdatedThrows(error: AmiiboServiceError) async {
|
||||
// GIVEN
|
||||
let service = AmiiboService(client: AmiiboMockClient(error: error))
|
||||
|
||||
// WHEN
|
||||
// THEN
|
||||
await #expect(throws: error) {
|
||||
try await service.getLastUpdated()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Arguments
|
||||
|
||||
private enum Errors {
|
||||
/// All possible errors that can be thrown by the service.
|
||||
static let all: [AmiiboServiceError] = [
|
||||
.badRequest,
|
||||
.cancelled,
|
||||
.decoding,
|
||||
.notAvailable,
|
||||
.notFound,
|
||||
.undocumented(500),
|
||||
.unknown
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,245 @@
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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
|
||||
|
||||
/// A mock implementation of ``AmiiboClient`` that returns pre-configured data or throws pre-configured errors, for testing purposes.
|
||||
struct AmiiboMockClient {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// The list of amiibo items to return when ``getAmiibos(by:)`` is called, or `nil` to trigger a ``AmiiboServiceError/notFound`` error.
|
||||
private let amiibos: [Amiibo]?
|
||||
|
||||
/// The list of amiibo series to return when ``getAmiiboSeries(by:)`` is called, or `nil` to trigger a ``AmiiboServiceError/notFound`` error.
|
||||
private let amiiboSeries: [AmiiboSeries]?
|
||||
|
||||
/// The list of amiibo types to return when ``getAmiiboTypes(by:)`` is called, or `nil` to trigger a ``AmiiboServiceError/notFound`` error.
|
||||
private let amiiboTypes: [AmiiboType]?
|
||||
|
||||
/// An error to throw before returning any data. Takes precedence over stored data when set.
|
||||
private let error: AmiiboServiceError?
|
||||
|
||||
/// The list of game characters to return when ``getGameCharacters(by:)`` is called, or `nil` to trigger a ``AmiiboServiceError/notFound`` error.
|
||||
private let gameCharacters: [GameCharacter]?
|
||||
|
||||
/// The list of game series to return when ``getGameSeries(by:)`` is called, or `nil` to trigger a ``AmiiboServiceError/notFound`` error.
|
||||
private let gameSeries: [GameSeries]?
|
||||
|
||||
/// The last updated date to return when ``getLastUpdated()`` is called, or `nil` to trigger a ``AmiiboServiceError/notFound`` error.
|
||||
private let lastUpdated: Date?
|
||||
|
||||
// MARK: Initializers
|
||||
|
||||
/// Initializes this client.
|
||||
/// - Parameters:
|
||||
/// - amiibos: A list of amiibo items to return, if any.
|
||||
/// - amiiboSeries: A list of amiibo series to return, if any.
|
||||
/// - amiiboTypes: A list of amiibo types to return, if any.
|
||||
/// - gameCharacters: A list of game characters to return, if any.
|
||||
/// - gameSeries: A list of game series to return, if any.
|
||||
/// - lastUpdated: A last updated date to return, if any.
|
||||
/// - error: An error to throw, if any.
|
||||
init(
|
||||
amiibos: [Amiibo]? = nil,
|
||||
amiiboSeries: [AmiiboSeries]? = nil,
|
||||
amiiboTypes: [AmiiboType]? = nil,
|
||||
gameCharacters: [GameCharacter]? = nil,
|
||||
gameSeries: [GameSeries]? = nil,
|
||||
lastUpdated: Date? = nil,
|
||||
error: AmiiboServiceError? = nil
|
||||
) {
|
||||
self.amiibos = amiibos
|
||||
self.amiiboSeries = amiiboSeries
|
||||
self.amiiboTypes = amiiboTypes
|
||||
self.error = error
|
||||
self.gameCharacters = gameCharacters
|
||||
self.gameSeries = gameSeries
|
||||
self.lastUpdated = lastUpdated
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - AmiiboClient
|
||||
|
||||
extension AmiiboMockClient: AmiiboClient {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
#if swift(>=6.0)
|
||||
func getAmiibos(
|
||||
by filter: AmiiboFilter
|
||||
) async throws(AmiiboServiceError) -> [Amiibo] {
|
||||
try fetchAmiibosIfAny()
|
||||
}
|
||||
|
||||
func getAmiiboSeries(
|
||||
by filter: AmiiboSeriesFilter
|
||||
) async throws(AmiiboServiceError) -> [AmiiboSeries] {
|
||||
try fetchAmiiboSeriesIfAny()
|
||||
}
|
||||
|
||||
func getAmiiboTypes(
|
||||
by filter: AmiiboTypeFilter
|
||||
) async throws(AmiiboServiceError) -> [AmiiboType] {
|
||||
try fetchAmiiboTypesIfAny()
|
||||
}
|
||||
|
||||
func getGameCharacters(
|
||||
by filter: GameCharacterFilter
|
||||
) async throws(AmiiboServiceError) -> [GameCharacter] {
|
||||
try fetchGameCharactersIfAny()
|
||||
}
|
||||
|
||||
func getGameSeries(
|
||||
by filter: GameSeriesFilter
|
||||
) async throws(AmiiboServiceError) -> [GameSeries] {
|
||||
try fetchGameSeriesIfAny()
|
||||
}
|
||||
|
||||
func getLastUpdated() async throws(AmiiboServiceError) -> Date {
|
||||
fetchLastUpdatedIfAny()
|
||||
}
|
||||
#else
|
||||
func getAmiibos(
|
||||
by filter: AmiiboFilter
|
||||
) async throws -> [Amiibo] {
|
||||
try fetchAmiibosIfAny()
|
||||
}
|
||||
|
||||
func getAmiiboSeries(
|
||||
by filter: AmiiboSeriesFilter
|
||||
) async throws -> [AmiiboSeries] {
|
||||
try fetchAmiiboSeriesIfAny()
|
||||
}
|
||||
|
||||
func getAmiiboTypes(
|
||||
by filter: AmiiboTypeFilter
|
||||
) async throws -> [AmiiboType] {
|
||||
try fetchAmiiboTypesIfAny()
|
||||
}
|
||||
|
||||
func getGameCharacters(
|
||||
by filter: GameCharacterFilter
|
||||
) async throws -> [GameCharacter] {
|
||||
try fetchGameCharactersIfAny()
|
||||
}
|
||||
|
||||
func getGameSeries(
|
||||
by filter: GameSeriesFilter
|
||||
) async throws -> [GameSeries] {
|
||||
try fetchGameSeriesIfAny()
|
||||
}
|
||||
|
||||
func getLastUpdated() async throws -> Date {
|
||||
try fetchLastUpdatedIfAny()
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
// MARK: - Helpers
|
||||
|
||||
private extension AmiiboMockClient {
|
||||
|
||||
// MARK: Functions
|
||||
|
||||
/// Fetches a list of amiibo items, if any.
|
||||
/// - Returns: A list of amiibo items.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case an error has been provided.
|
||||
func fetchAmiibosIfAny() throws -> [Amiibo] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiibos else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiibos
|
||||
}
|
||||
|
||||
/// Fetches a list of amiibo series, if any.
|
||||
/// - Returns: A list of amiibo series.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case an error has been provided.
|
||||
func fetchAmiiboSeriesIfAny() throws -> [AmiiboSeries] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiiboSeries else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiiboSeries
|
||||
}
|
||||
|
||||
/// Fetches a list of amiibo types, if any.
|
||||
/// - Returns: A list of amiibo types.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case an error has been provided.
|
||||
func fetchAmiiboTypesIfAny() throws -> [AmiiboType] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let amiiboTypes else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return amiiboTypes
|
||||
}
|
||||
|
||||
/// Fetches a list of game characters, if any.
|
||||
/// - Returns: A list of game characters.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case an error has been provided.
|
||||
func fetchGameCharactersIfAny() throws -> [GameCharacter] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let gameCharacters else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return gameCharacters
|
||||
}
|
||||
|
||||
/// Fetches a list of game series, if any.
|
||||
/// - Returns: A list of game series, if any.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case an error has been provided.
|
||||
func fetchGameSeriesIfAny() throws -> [GameSeries] {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let gameSeries else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return gameSeries
|
||||
}
|
||||
|
||||
/// Fetches a last updated date, if any.
|
||||
/// - Returns: A last updated date.
|
||||
/// - Throws: An ``AmiiboServiceError`` error in case an error has been provided.
|
||||
func fetchLastUpdatedIfAny() throws -> Date {
|
||||
try throwErrorIfExists()
|
||||
|
||||
guard let lastUpdated else {
|
||||
throw AmiiboServiceError.notFound
|
||||
}
|
||||
|
||||
return lastUpdated
|
||||
}
|
||||
|
||||
/// Throws the configured error if one has been provided.
|
||||
/// - Throws: An ``AmiiboServiceError`` error if one was configured during initialization.
|
||||
func throwErrorIfExists() throws(AmiiboServiceError) {
|
||||
if let error {
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
// ===----------------------------------------------------------------------===
|
||||
//
|
||||
// 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 Testing
|
||||
|
||||
extension Tag {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// Tag that indicates tests against a live backend service.
|
||||
@Tag static var live: Self
|
||||
|
||||
/// Tag that indicates tests using a mock client.
|
||||
@Tag static var mock: Self
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"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":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"rhs","kind":"internalParam"},{"text":": ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","preciseIdentifier":"s:Sb","kind":"typeIdentifier"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"},{"kind":"parameters","parameters":[{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"A value to compare."}]}],"name":"lhs"},{"content":[{"type":"paragraph","inlineContent":[{"type":"text","text":"Another value to compare."}]}],"name":"rhs"}]},{"kind":"content","content":[{"type":"heading","level":2,"text":"Discussion","anchor":"discussion"},{"type":"paragraph","inlineContent":[{"text":"Inequality is the inverse of equality. For any values ","type":"text"},{"code":"a","type":"codeVoice"},{"text":" and ","type":"text"},{"code":"b","type":"codeVoice"},{"text":", ","type":"text"},{"code":"a != b","type":"codeVoice"},{"text":" ","type":"text"},{"text":"implies that ","type":"text"},{"code":"a == b","type":"codeVoice"},{"text":" is ","type":"text"},{"code":"false","type":"codeVoice"},{"text":".","type":"text"}]},{"type":"paragraph","inlineContent":[{"text":"This is the default implementation of the not-equal-to operator (","type":"text"},{"code":"!=","type":"codeVoice"},{"text":")","type":"text"},{"text":" ","type":"text"},{"text":"for any type that conforms to ","type":"text"},{"code":"Equatable","type":"codeVoice"},{"text":".","type":"text"}]}]}],"sections":[],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/!=(_:_:)","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"abstract":[{"text":"Returns a Boolean value indicating whether two values are not equal.","type":"text"}],"metadata":{"extendedModule":"Swift","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":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"symbolKind":"op","modules":[{"name":"AmiiboService","relatedModules":["Swift"]}],"role":"symbol","externalID":"s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:13AmiiboService0A0V","roleHeading":"Operator","title":"!=(_:_:)"},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/!=(_:_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/!=(_:_:)":{"abstract":[{"type":"text","text":"Returns a Boolean value indicating whether two values are not equal."}],"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":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"!=(_:_:)","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/!=(_:_:)","type":"topic","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/!=(_:_:)"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"}}}
|
||||
@@ -0,0 +1 @@
|
||||
{"metadata":{"roleHeading":"API Collection","role":"collectionGroup","title":"Equatable Implementations","modules":[{"name":"AmiiboService"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"kind":"article","variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Equatable-Implementations"},"topicSections":[{"generated":true,"title":"Operators","anchor":"Operators","identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/!=(_:_:)"]}],"sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/!=(_:_:)":{"abstract":[{"type":"text","text":"Returns a Boolean value indicating whether two values are not equal."}],"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":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"!=(_:_:)","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/!=(_:_:)","type":"topic","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/!=(_:_:)"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"sections":[],"kind":"article","schemaVersion":{"major":0,"patch":0,"minor":3},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/Equatable-Implementations","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"topicSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/!=(_:_:)"],"title":"Operators","anchor":"Operators","generated":true}],"metadata":{"modules":[{"name":"AmiiboService"}],"title":"Equatable Implementations","roleHeading":"API Collection","role":"collectionGroup"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/game\/equatable-implementations"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Game","kind":"identifier"}],"title":"Amiibo.Game","type":"topic","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","navigatorTitle":[{"text":"Game","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/!=(_:_:)":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/!=(_:_:)","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":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"text":"Bool","kind":"typeIdentifier","preciseIdentifier":"s:Sb"}],"title":"!=(_:_:)","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/game\/!=(_:_:)","kind":"symbol","abstract":[{"type":"text","text":"Returns a Boolean value indicating whether two values are not equal."}]}}}
|
||||
@@ -1 +1 @@
|
||||
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"sections":[],"abstract":[{"type":"text","text":"A list of identifiers."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/game\/identifiers"]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/identifiers"},"kind":"symbol","metadata":{"role":"symbol","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"identifiers","kind":"identifier"},{"text":": [","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"},{"kind":"text","text":"]"}],"title":"identifiers","externalID":"s:13AmiiboService0A0V4GameV11identifiersSaySSGvp"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"identifiers","kind":"identifier"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":"]"}],"languages":["swift"]}]}],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/identifiers":{"title":"identifiers","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/game\/identifiers","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/identifiers","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"identifiers"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"kind":"text","text":"]"}],"type":"topic","abstract":[{"type":"text","text":"A list of identifiers."}]},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"type":"topic","abstract":[{"type":"text","text":"A model that represents a game related to an amiibo item."}],"navigatorTitle":[{"kind":"identifier","text":"Game"}],"title":"Amiibo.Game","url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"metadata":{"symbolKind":"property","role":"symbol","roleHeading":"Instance Property","externalID":"s:13AmiiboService0A0V4GameV11identifiersSaySSGvp","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"identifiers"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":"]"}],"title":"identifiers","modules":[{"name":"AmiiboService"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"abstract":[{"text":"A list of game identifiers associated with this game.","type":"text"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/game\/identifiers"]}],"kind":"symbol","schemaVersion":{"minor":3,"major":0,"patch":0},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"identifiers","kind":"identifier"},{"text":": [","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"},{"text":"]","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/identifiers","interfaceLanguage":"swift"},"sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/identifiers":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/identifiers","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"identifiers"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"kind":"text","text":"]"}],"title":"identifiers","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/game\/identifiers","kind":"symbol","abstract":[{"type":"text","text":"A list of game identifiers associated with this game."}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Game","kind":"identifier"}],"title":"Amiibo.Game","type":"topic","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","navigatorTitle":[{"text":"Game","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"abstract":[{"type":"text","text":"A name."}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/game\/name"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/name"},"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}]}]}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"sections":[],"metadata":{"role":"symbol","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"symbolKind":"property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"title":"name","externalID":"s:13AmiiboService0A0V4GameV4nameSSvp"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/name":{"kind":"symbol","role":"symbol","abstract":[{"text":"A name.","type":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/game\/name","type":"topic","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"title":"name","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/name"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"type":"topic","abstract":[{"type":"text","text":"A model that represents a game related to an amiibo item."}],"navigatorTitle":[{"kind":"identifier","text":"Game"}],"title":"Amiibo.Game","url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"}}}
|
||||
{"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"text":"The name of this game.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/game\/name"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"name"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"title":"name","modules":[{"name":"AmiiboService"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V4GameV4nameSSvp"},"kind":"symbol","sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/name"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/name":{"kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"abstract":[{"text":"The name of this game.","type":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/game\/name","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/name","title":"name","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Game","kind":"identifier"}],"title":"Amiibo.Game","type":"topic","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","navigatorTitle":[{"text":"Game","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"abstract":[{"text":"A list of amiibo usages, if any.","type":"text"}],"metadata":{"title":"usages","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"usages","kind":"identifier"},{"text":": [","kind":"text"},{"text":"Amiibo","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V"},{"text":".","kind":"text"},{"text":"Usage","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V5UsageV"},{"text":"]?","kind":"text"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V4GameV6usagesSayAC5UsageVGSgvp"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/game\/usages"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"usages"},{"kind":"text","text":": ["},{"text":"Amiibo","preciseIdentifier":"s:13AmiiboService0A0V","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V5UsageV","text":"Usage","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"},{"kind":"text","text":"]?"}],"platforms":["macOS"]}]}],"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/usages","interfaceLanguage":"swift"},"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"type":"topic","abstract":[{"type":"text","text":"A model that represents a game related to an amiibo item."}],"navigatorTitle":[{"kind":"identifier","text":"Game"}],"title":"Amiibo.Game","url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","kind":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"Game"}],"role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/usages":{"kind":"symbol","role":"symbol","abstract":[{"type":"text","text":"A list of amiibo usages, if any."}],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"usages"},{"kind":"text","text":": ["},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V","text":"Amiibo"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V5UsageV","text":"Usage"},{"kind":"text","text":"]?"}],"title":"usages","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/game\/usages","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/usages"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","role":"symbol","abstract":[{"text":"A model that represents the usage of an amiibo item within a certain game.","type":"text"}],"navigatorTitle":[{"text":"Usage","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Usage","kind":"identifier"}],"title":"Amiibo.Usage","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","url":"\/documentation\/amiiboservice\/amiibo\/usage"}}}
|
||||
{"metadata":{"roleHeading":"Instance Property","externalID":"s:13AmiiboService0A0V4GameV6usagesSayAC5UsageVGSgvp","modules":[{"name":"AmiiboService"}],"symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"usages","kind":"identifier"},{"text":": [","kind":"text"},{"text":"Amiibo","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V"},{"text":".","kind":"text"},{"text":"Usage","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V5UsageV"},{"text":"]?","kind":"text"}],"role":"symbol","title":"usages"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game"]]},"abstract":[{"text":"A list of amiibo usages within this game, if available.","type":"text"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/game\/usages"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"usages","kind":"identifier"},{"text":": [","kind":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","text":"Amiibo","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V"},{"text":".","kind":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","text":"Usage","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V5UsageV"},{"text":"]?","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/usages"},"sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Game","kind":"identifier"}],"title":"Amiibo.Game","type":"topic","abstract":[{"text":"A model that represents a game related to an amiibo.","type":"text"}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/game","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game","navigatorTitle":[{"text":"Game","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Game/usages":{"role":"symbol","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Game\/usages","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"usages","kind":"identifier"},{"text":": [","kind":"text"},{"text":"Amiibo","preciseIdentifier":"s:13AmiiboService0A0V","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Usage","preciseIdentifier":"s:13AmiiboService0A0V5UsageV","kind":"typeIdentifier"},{"text":"]?","kind":"text"}],"title":"usages","url":"\/documentation\/amiiboservice\/amiibo\/game\/usages","type":"topic","abstract":[{"text":"A list of amiibo usages within this game, if available.","type":"text"}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Usage"}],"title":"Amiibo.Usage","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"Usage"}],"abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}]}}}
|
||||
@@ -1 +1 @@
|
||||
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameCharacter","interfaceLanguage":"swift"},"kind":"symbol","sections":[],"abstract":[{"type":"text","text":"A game character."}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"primaryContentSections":[{"declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameCharacter"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}]}],"kind":"declarations"}],"metadata":{"role":"symbol","modules":[{"name":"AmiiboService"}],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameCharacter"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"externalID":"s:13AmiiboService0A0V13gameCharacterSSvp","symbolKind":"property","roleHeading":"Instance Property","title":"gameCharacter"},"schemaVersion":{"patch":0,"major":0,"minor":3},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/gamecharacter"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/gameCharacter":{"type":"topic","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/gamecharacter","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameCharacter","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameCharacter","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"title":"gameCharacter","abstract":[{"type":"text","text":"A game character."}]},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameCharacter"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"languages":["swift"]}],"kind":"declarations"}],"sections":[],"schemaVersion":{"patch":0,"minor":3,"major":0},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameCharacter","interfaceLanguage":"swift"},"abstract":[{"text":"The name of the game character associated with this amiibo.","type":"text"}],"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameCharacter"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V13gameCharacterSSvp","roleHeading":"Instance Property","title":"gameCharacter"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/gamecharacter"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/gameCharacter":{"abstract":[{"text":"The name of the game character associated with this amiibo.","type":"text"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameCharacter","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"title":"gameCharacter","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/gamecharacter","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameCharacter"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"}}}
|
||||
@@ -1 +1 @@
|
||||
{"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"abstract":[{"type":"text","text":"A game series."}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/gameseries"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"role":"symbol","modules":[{"name":"AmiiboService"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"gameSeries"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"externalID":"s:13AmiiboService0A0V10gameSeriesSSvp","symbolKind":"property","roleHeading":"Instance Property","title":"gameSeries"},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameSeries","interfaceLanguage":"swift"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameSeries"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"languages":["swift"],"platforms":["macOS"]}]}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/gameSeries":{"abstract":[{"text":"A game series.","type":"text"}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/gameseries","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameSeries","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameSeries","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"type":"topic","title":"gameSeries"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameSeries"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"languages":["swift"],"platforms":["macOS"]}]}],"sections":[],"kind":"symbol","schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameSeries","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"abstract":[{"text":"The name of the game series associated with this amiibo.","type":"text"}],"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"gameSeries","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V10gameSeriesSSvp","roleHeading":"Instance Property","title":"gameSeries"},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/gameseries"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/gameSeries":{"role":"symbol","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/gameSeries","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"gameSeries"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"url":"\/documentation\/amiiboservice\/amiibo\/gameseries","type":"topic","title":"gameSeries","abstract":[{"type":"text","text":"The name of the game series associated with this amiibo."}]}}}
|
||||
@@ -1 +1 @@
|
||||
{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"head","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/head"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"title":"head","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"head","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V4headSSvp"},"kind":"symbol","sections":[],"abstract":[{"type":"text","text":"The first 8 hexadecimal characters of an identifier."}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/head":{"abstract":[{"text":"The first 8 hexadecimal characters of an identifier.","type":"text"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"head","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"url":"\/documentation\/amiiboservice\/amiibo\/head","title":"head","type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"}}}
|
||||
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"head","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}]}]}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/head"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","metadata":{"symbolKind":"property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"head"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"role":"symbol","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"title":"head","externalID":"s:13AmiiboService0A0V4headSSvp"},"abstract":[{"text":"The first 8 hexadecimal characters of the amiibo identifier.","type":"text"}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","interfaceLanguage":"swift"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/head":{"abstract":[{"text":"The first 8 hexadecimal characters of the amiibo identifier.","type":"text"}],"kind":"symbol","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/head","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"head","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","title":"head","type":"topic"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"abstract":[{"text":"An identifier.","type":"text"}],"sections":[],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"kind":"identifier","text":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"},{"text":" { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/identifier"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"title":"identifier","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"identifier","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V10identifierSSvp"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"kind":"symbol","identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/identifier","interfaceLanguage":"swift"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/identifier":{"abstract":[{"type":"text","text":"An identifier."}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/identifier","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/identifier","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"identifier","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"title":"identifier","type":"topic"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"abstract":[{"type":"text","text":"The full 16-character hexadecimal identifier, composed of the "},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","type":"reference","isActive":true},{"type":"text","text":" and "},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","type":"reference","isActive":true},{"type":"text","text":"."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/identifier"]}],"kind":"symbol","identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/identifier","interfaceLanguage":"swift"},"metadata":{"role":"symbol","externalID":"s:13AmiiboService0A0V10identifierSSvp","symbolKind":"property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"title":"identifier","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property"},"sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"primaryContentSections":[{"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":" }"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"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"}],"kind":"symbol","role":"symbol","abstract":[{"type":"text","text":"The full 16-character hexadecimal identifier, composed of the "},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","type":"reference","isActive":true},{"type":"text","text":" and "},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","type":"reference","isActive":true},{"type":"text","text":"."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/identifier","url":"\/documentation\/amiiboservice\/amiibo\/identifier","type":"topic","title":"identifier"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/tail":{"abstract":[{"text":"The last 8 hexadecimal characters of the amiibo identifier.","type":"text"}],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"tail"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"tail","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/tail","type":"topic","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/head":{"abstract":[{"text":"The first 8 hexadecimal characters of the amiibo identifier.","type":"text"}],"kind":"symbol","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/head","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"head","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/head","title":"head","type":"topic"}}}
|
||||
@@ -1 +1 @@
|
||||
{"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"image"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}],"symbolKind":"property","title":"image","roleHeading":"Instance Property","role":"symbol","modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V5imageSSvp"},"abstract":[{"type":"text","text":"An image link."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"image","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]}],"kind":"declarations"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/image"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"sections":[],"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/image":{"type":"topic","title":"image","abstract":[{"text":"An image link.","type":"text"}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/image","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"image","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"text":"A URL string pointing to the image of this amiibo.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/image"]}],"sections":[],"metadata":{"roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"image"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}],"title":"image","modules":[{"name":"AmiiboService"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V5imageSSvp"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"image","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}]}]}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","interfaceLanguage":"swift"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/image":{"kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"image","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"abstract":[{"type":"text","text":"A URL string pointing to the image of this amiibo."}],"url":"\/documentation\/amiiboservice\/amiibo\/image","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","title":"image","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/imageurl"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"type":"text","text":"A URL related to an image link, if any."}],"metadata":{"role":"symbol","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"symbolKind":"property","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"}],"title":"imageURL","externalID":"s:13AmiiboService0A0V8imageURL10Foundation0D0VSgvp"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"text":"URL","preciseIdentifier":"s:10Foundation3URLV","kind":"typeIdentifier"},{"text":"? { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}]}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/imageURL":{"abstract":[{"type":"text","text":"A URL related to an image link, if any."}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/imageurl","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"text":"URL","preciseIdentifier":"s:10Foundation3URLV","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"title":"imageURL","type":"topic"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"}}}
|
||||
{"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"text":"A URL constructed from the ","type":"text"},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","isActive":true},{"text":" string, if valid.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/imageurl"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"roleHeading":"Instance Property","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"}],"title":"imageURL","modules":[{"name":"AmiiboService"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V8imageURL10Foundation0D0VSgvp"},"kind":"symbol","sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"text":"URL","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation3URLV"},{"text":"? { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/imageURL":{"kind":"symbol","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"}],"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","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL","title":"imageURL","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/image":{"kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"image","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"abstract":[{"type":"text","text":"A URL string pointing to the image of this amiibo."}],"url":"\/documentation\/amiiboservice\/amiibo\/image","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","title":"image","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"abstract":[{"type":"text","text":"An amiibo name."}],"metadata":{"role":"symbol","modules":[{"name":"AmiiboService"}],"symbolKind":"property","title":"name","externalID":"s:13AmiiboService0A0V4nameSSvp","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/name"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}]}],"kind":"declarations"}],"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/name"},"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/name":{"title":"name","kind":"symbol","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"name"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"role":"symbol","abstract":[{"text":"An amiibo name.","type":"text"}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/name","url":"\/documentation\/amiiboservice\/amiibo\/name"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"type":"text","text":"The name of this amiibo."}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/name"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"title":"name","modules":[{"name":"AmiiboService"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V4nameSSvp"},"kind":"symbol","sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"platforms":["macOS"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/name"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/name":{"kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"name","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"abstract":[{"type":"text","text":"The name of this amiibo."}],"url":"\/documentation\/amiiboservice\/amiibo\/name","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/name","title":"name","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"abstract":[{"type":"text","text":"A game platform type, if any."}],"metadata":{"externalID":"s:13AmiiboService0A0V8platformAC8PlatformVSgvp","symbolKind":"property","title":"platform","role":"symbol","modules":[{"name":"AmiiboService"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"platform","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Amiibo","preciseIdentifier":"s:13AmiiboService0A0V","kind":"typeIdentifier"},{"text":".","kind":"text"},{"kind":"typeIdentifier","text":"Platform","preciseIdentifier":"s:13AmiiboService0A0V8PlatformV"},{"text":"?","kind":"text"}],"roleHeading":"Instance Property"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.property"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"platform"},{"kind":"text","text":": "},{"text":"Amiibo","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},{"text":".","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V8PlatformV","kind":"typeIdentifier","text":"Platform","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"},{"kind":"text","text":"?"}],"languages":["swift"]}]}],"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/platform-swift.property"},"schemaVersion":{"major":0,"patch":0,"minor":3},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct","kind":"symbol","title":"Amiibo.Platform","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Platform","kind":"identifier"}],"abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"WiiU"},{"text":", ","type":"text"},{"code":"3DS","type":"codeVoice"},{"type":"text","text":", and "},{"code":"Switch","type":"codeVoice"},{"type":"text","text":" games related to an amiibo item."}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","type":"topic","navigatorTitle":[{"text":"Platform","kind":"identifier"}],"role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/platform-swift.property":{"kind":"symbol","role":"symbol","abstract":[{"type":"text","text":"A game platform type, if any."}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"platform"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V","text":"Amiibo"},{"kind":"text","text":"."},{"kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V8PlatformV","text":"Platform"},{"text":"?","kind":"text"}],"type":"topic","title":"platform","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.property","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/platform-swift.property"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V8platformAC8PlatformVSgvp","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"platform","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Amiibo","preciseIdentifier":"s:13AmiiboService0A0V","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Platform","preciseIdentifier":"s:13AmiiboService0A0V8PlatformV","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"role":"symbol","title":"platform","symbolKind":"property","roleHeading":"Instance Property"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"platform","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V","text":"Amiibo","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},{"text":".","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V8PlatformV","text":"Platform","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"},{"text":"?","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.property"]}],"abstract":[{"text":"The game platform data for this amiibo, if available.","type":"text"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/platform-swift.property"},"sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/platform-swift.property":{"kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"platform","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Amiibo","preciseIdentifier":"s:13AmiiboService0A0V","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Platform","preciseIdentifier":"s:13AmiiboService0A0V8PlatformV","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"abstract":[{"type":"text","text":"The game platform data for this amiibo, if available."}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.property","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/platform-swift.property","title":"platform","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"kind":"symbol","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"type":"text","text":", "},{"type":"codeVoice","code":"3DS"},{"type":"text","text":", and "},{"type":"codeVoice","code":"Wii U"},{"text":" games related to an amiibo.","type":"text"}],"title":"Amiibo.Platform","role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Platform","kind":"identifier"}],"navigatorTitle":[{"text":"Platform","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
{"kind":"article","schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/Equatable-Implementations","interfaceLanguage":"swift"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"]]},"topicSections":[{"title":"Operators","generated":true,"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct\/!=(_:_:)"],"anchor":"Operators"}],"metadata":{"role":"collectionGroup","title":"Equatable Implementations","modules":[{"name":"AmiiboService"}],"roleHeading":"API Collection"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/equatable-implementations"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct":{"kind":"symbol","abstract":[{"text":"A model that represents a collection of ","type":"text"},{"type":"codeVoice","code":"Switch"},{"text":", ","type":"text"},{"type":"codeVoice","code":"Switch 2"},{"type":"text","text":", "},{"type":"codeVoice","code":"3DS"},{"type":"text","text":", and "},{"type":"codeVoice","code":"Wii U"},{"text":" games related to an amiibo.","type":"text"}],"title":"Amiibo.Platform","role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Platform","kind":"identifier"}],"navigatorTitle":[{"text":"Platform","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-swift.struct"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Platform-swift.struct/!=(_:_:)":{"abstract":[{"text":"Returns a Boolean value indicating whether two values are not equal.","type":"text"}],"type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Platform-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":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"!=(_:_:)","url":"\/documentation\/amiiboservice\/amiibo\/platform-swift.struct\/!=(_:_:)","role":"symbol","kind":"symbol"}}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"text":"release","kind":"identifier"},{"kind":"text","text":": "},{"text":"Amiibo","kind":"typeIdentifier","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","preciseIdentifier":"s:13AmiiboService0A0V"},{"text":".","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","kind":"typeIdentifier","text":"Release"}]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.property"]}],"metadata":{"role":"symbol","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"release","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V","text":"Amiibo","kind":"typeIdentifier"},{"text":".","kind":"text"},{"preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV","kind":"typeIdentifier","text":"Release"}],"title":"release","externalID":"s:13AmiiboService0A0V7releaseAC7ReleaseVvp","symbolKind":"property"},"kind":"symbol","sections":[],"abstract":[{"type":"text","text":"A release date."}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/release-swift.property","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents a collection of release dates related to an amiibo item."}],"role":"symbol","navigatorTitle":[{"text":"Release","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"type":"topic","title":"Amiibo.Release"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/release-swift.property":{"abstract":[{"text":"A release date.","type":"text"}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.property","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/release-swift.property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"release","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Amiibo","preciseIdentifier":"s:13AmiiboService0A0V","kind":"typeIdentifier"},{"text":".","kind":"text"},{"text":"Release","preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV","kind":"typeIdentifier"}],"type":"topic","title":"release"}}}
|
||||
{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"release"},{"kind":"text","text":": "},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","preciseIdentifier":"s:13AmiiboService0A0V","kind":"typeIdentifier","text":"Amiibo"},{"kind":"text","text":"."},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV","kind":"typeIdentifier","text":"Release"}],"languages":["swift"]}]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/release-swift.property","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The release dates of this amiibo across different regions."}],"metadata":{"roleHeading":"Instance Property","externalID":"s:13AmiiboService0A0V7releaseAC7ReleaseVvp","modules":[{"name":"AmiiboService"}],"symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"release","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:13AmiiboService0A0V","text":"Amiibo","kind":"typeIdentifier"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"Release","preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV"}],"role":"symbol","title":"release"},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.property"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}],"navigatorTitle":[{"text":"Release","kind":"identifier"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","type":"topic","title":"Amiibo.Release","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/release-swift.property":{"role":"symbol","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/release-swift.property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"release","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Amiibo","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V"},{"text":".","kind":"text"},{"text":"Release","kind":"typeIdentifier","preciseIdentifier":"s:13AmiiboService0A0V7ReleaseV"}],"title":"release","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.property","type":"topic","abstract":[{"text":"The release dates of this amiibo across different regions.","type":"text"}]}}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"kind":"symbol","sections":[],"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\/america"]}],"schemaVersion":{"minor":3,"major":0,"patch":0},"abstract":[{"text":"A release date for North America, if any.","type":"text"}],"metadata":{"title":"america","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"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"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V7ReleaseV7america10Foundation4DateVSgvp"},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/america","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"america","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation4DateV","text":"Date","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"languages":["swift"]}],"kind":"declarations"}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/america":{"kind":"symbol","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/america","abstract":[{"type":"text","text":"A release date for North America, if any."}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"america","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Date","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV"},{"text":"?","kind":"text"}],"title":"america","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/america"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents a collection of release dates related to an amiibo item."}],"role":"symbol","navigatorTitle":[{"text":"Release","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"type":"topic","title":"Amiibo.Release"}}}
|
||||
{"metadata":{"symbolKind":"property","modules":[{"name":"AmiiboService"}],"title":"america","roleHeading":"Instance Property","externalID":"s:13AmiiboService0A0V7ReleaseV7america10Foundation4DateVSgvp","role":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"america"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10Foundation4DateV","text":"Date","kind":"typeIdentifier"},{"text":"?","kind":"text"}]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/america"]}],"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/america","interfaceLanguage":"swift"},"kind":"symbol","abstract":[{"type":"text","text":"A release date for North America, if any."}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"america","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation4DateV","text":"Date","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"languages":["swift"]}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}],"navigatorTitle":[{"text":"Release","kind":"identifier"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","type":"topic","title":"Amiibo.Release","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"type":"topic","navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"kind":"symbol","url":"\/documentation\/amiiboservice\/amiibo","abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"role":"symbol","title":"Amiibo","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/america":{"fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"text":"america","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"kind":"text","text":"?"}],"type":"topic","kind":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/america","abstract":[{"type":"text","text":"A release date for North America, if any."}],"role":"symbol","title":"america","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/america"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"kind":"symbol","sections":[],"schemaVersion":{"major":0,"minor":3,"patch":0},"metadata":{"role":"symbol","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"australia"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10Foundation4DateV","kind":"typeIdentifier","text":"Date"},{"kind":"text","text":"?"}],"title":"australia","externalID":"s:13AmiiboService0A0V7ReleaseV9australia10Foundation4DateVSgvp","symbolKind":"property"},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/australia"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"A release date for Australia, if any."}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"australia"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Date","preciseIdentifier":"s:10Foundation4DateV"},{"kind":"text","text":"?"}]}]}],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/australia","interfaceLanguage":"swift"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/australia":{"abstract":[{"text":"A release date for Australia, if any.","type":"text"}],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"australia"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Date","preciseIdentifier":"s:10Foundation4DateV"},{"kind":"text","text":"?"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/australia","title":"australia","type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/australia"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents a collection of release dates related to an amiibo item."}],"role":"symbol","navigatorTitle":[{"text":"Release","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"type":"topic","title":"Amiibo.Release"}}}
|
||||
{"kind":"symbol","metadata":{"modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V7ReleaseV9australia10Foundation4DateVSgvp","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"australia","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Date","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV"},{"text":"?","kind":"text"}],"role":"symbol","title":"australia","symbolKind":"property","roleHeading":"Instance Property"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"australia","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Date","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV"},{"text":"?","kind":"text"}],"languages":["swift"]}]}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/australia"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"type":"text","text":"A release date for Australia, if any."}],"schemaVersion":{"patch":0,"minor":3,"major":0},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/australia"},"sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}],"navigatorTitle":[{"text":"Release","kind":"identifier"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","type":"topic","title":"Amiibo.Release","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/australia":{"role":"symbol","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/australia","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"australia","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Date","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV"},{"text":"?","kind":"text"}],"title":"australia","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/australia","abstract":[{"type":"text","text":"A release date for Australia, if any."}]}}}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/equatable-implementations"]}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"topicSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/!=(_:_:)"],"generated":true,"title":"Operators","anchor":"Operators"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/Equatable-Implementations","interfaceLanguage":"swift"},"metadata":{"role":"collectionGroup","roleHeading":"API Collection","title":"Equatable Implementations","modules":[{"name":"AmiiboService"}]},"kind":"article","sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}],"navigatorTitle":[{"text":"Release","kind":"identifier"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","type":"topic","title":"Amiibo.Release","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/!=(_:_:)":{"abstract":[{"type":"text","text":"Returns a Boolean value indicating whether two values are not equal."}],"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":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"!=(_:_:)","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/!=(_:_:)","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/!=(_:_:)"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"kind":"symbol","metadata":{"role":"symbol","modules":[{"name":"AmiiboService"}],"symbolKind":"property","roleHeading":"Instance Property","title":"europe","externalID":"s:13AmiiboService0A0V7ReleaseV6europe10Foundation4DateVSgvp","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"europe","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"Date","preciseIdentifier":"s:10Foundation4DateV"},{"kind":"text","text":"?"}]},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/europe"},"abstract":[{"type":"text","text":"A release date for Europe, if any."}],"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"europe","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Date","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV"},{"text":"?","kind":"text"}]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"schemaVersion":{"patch":0,"minor":3,"major":0},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/europe"]}],"sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/europe":{"type":"topic","abstract":[{"text":"A release date for Europe, if any.","type":"text"}],"title":"europe","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/europe","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/europe","kind":"symbol","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"europe"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"kind":"text","text":"?"}],"role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents a collection of release dates related to an amiibo item."}],"role":"symbol","navigatorTitle":[{"text":"Release","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"type":"topic","title":"Amiibo.Release"}}}
|
||||
{"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"europe"},{"kind":"text","text":": "},{"text":"Date","preciseIdentifier":"s:10Foundation4DateV","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"languages":["swift"]}]}],"kind":"symbol","schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/europe"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"abstract":[{"type":"text","text":"A release date for Europe, if any."}],"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"europe","kind":"identifier"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"kind":"text","text":"?"}],"symbolKind":"property","role":"symbol","modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V7ReleaseV6europe10Foundation4DateVSgvp","roleHeading":"Instance Property","title":"europe"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/europe"]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}],"navigatorTitle":[{"text":"Release","kind":"identifier"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","type":"topic","title":"Amiibo.Release","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/europe":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"europe"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10Foundation4DateV","kind":"typeIdentifier","text":"Date"},{"kind":"text","text":"?"}],"kind":"symbol","role":"symbol","abstract":[{"text":"A release date for Europe, if any.","type":"text"}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/europe","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/europe","type":"topic","title":"europe"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"abstract":[{"type":"text","text":"A release date for Japan, if any."}],"metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"japan"},{"kind":"text","text":": "},{"preciseIdentifier":"s:10Foundation4DateV","kind":"typeIdentifier","text":"Date"},{"kind":"text","text":"?"}],"symbolKind":"property","title":"japan","role":"symbol","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","externalID":"s:13AmiiboService0A0V7ReleaseV5japan10Foundation4DateVSgvp"},"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\/japan"]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"japan"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"text":"?","kind":"text"}],"languages":["swift"],"platforms":["macOS"]}]}],"kind":"symbol","sections":[],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/japan","interfaceLanguage":"swift"},"schemaVersion":{"minor":3,"major":0,"patch":0},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents a collection of release dates related to an amiibo item."}],"role":"symbol","navigatorTitle":[{"text":"Release","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"type":"topic","title":"Amiibo.Release"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/japan":{"kind":"symbol","role":"symbol","abstract":[{"text":"A release date for Japan, if any.","type":"text"}],"type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/japan","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"japan"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation4DateV","text":"Date","kind":"typeIdentifier"},{"kind":"text","text":"?"}],"title":"japan","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/japan"}}}
|
||||
{"metadata":{"modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V7ReleaseV5japan10Foundation4DateVSgvp","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"japan","kind":"identifier"},{"text":": ","kind":"text"},{"text":"Date","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV"},{"text":"?","kind":"text"}],"role":"symbol","title":"japan","symbolKind":"property","roleHeading":"Instance Property"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct"]]},"primaryContentSections":[{"declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"japan"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:10Foundation4DateV","text":"Date"},{"kind":"text","text":"?"}],"languages":["swift"]}],"kind":"declarations"}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/japan"]}],"abstract":[{"type":"text","text":"A release date for Japan, if any."}],"schemaVersion":{"minor":3,"major":0,"patch":0},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/japan","interfaceLanguage":"swift"},"sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct/japan":{"abstract":[{"type":"text","text":"A release date for Japan, if any."}],"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":"?"}],"title":"japan","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct\/japan","type":"topic","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct\/japan"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Release-swift.struct":{"abstract":[{"type":"text","text":"A model that represents the regional release dates of an amiibo."}],"navigatorTitle":[{"text":"Release","kind":"identifier"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Release-swift.struct","type":"topic","title":"Amiibo.Release","url":"\/documentation\/amiiboservice\/amiibo\/release-swift.struct","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Release","kind":"identifier"}],"kind":"symbol"}}}
|
||||
@@ -1 +1 @@
|
||||
{"sections":[],"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/series"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"type":"text","text":"An amiibo series."}],"metadata":{"role":"symbol","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"series","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"title":"series","externalID":"s:13AmiiboService0A0V6seriesSSvp"},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/series","interfaceLanguage":"swift"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"series"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}]}]}],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/series":{"type":"topic","title":"series","abstract":[{"type":"text","text":"An amiibo series."}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/series","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/series","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"series"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}]}}}
|
||||
{"kind":"symbol","abstract":[{"text":"The name of the amiibo series this amiibo belongs to.","type":"text"}],"primaryContentSections":[{"declarations":[{"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"series"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"minor":3,"major":0,"patch":0},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"metadata":{"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V6seriesSSvp","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"series"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"title":"series","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property"},"sections":[],"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/series","interfaceLanguage":"swift"},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/series"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"type":"topic","role":"symbol","fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"url":"\/documentation\/amiiboservice\/amiibo","abstract":[{"type":"text","text":"A model that represents an amiibo."}],"title":"Amiibo","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/series":{"url":"\/documentation\/amiiboservice\/amiibo\/series","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/series","role":"symbol","title":"series","abstract":[{"type":"text","text":"The name of the amiibo series this amiibo belongs to."}],"kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"series","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}]}}}
|
||||
@@ -1 +1 @@
|
||||
{"kind":"symbol","sections":[],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/tail"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"abstract":[{"type":"text","text":"The last 8 hexadecimal characters of an identifier."}],"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"tail","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"symbolKind":"property","title":"tail","modules":[{"name":"AmiiboService"}],"roleHeading":"Instance Property","role":"symbol","externalID":"s:13AmiiboService0A0V4tailSSvp"},"identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","interfaceLanguage":"swift"},"primaryContentSections":[{"declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"tail"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/tail":{"kind":"symbol","role":"symbol","abstract":[{"text":"The last 8 hexadecimal characters of an identifier.","type":"text"}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"tail","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"type":"topic","title":"tail","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail","url":"\/documentation\/amiiboservice\/amiibo\/tail"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"primaryContentSections":[{"declarations":[{"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"tail","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"languages":["swift"],"platforms":["macOS"]}],"kind":"declarations"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"abstract":[{"type":"text","text":"The last 8 hexadecimal characters of the amiibo identifier."}],"metadata":{"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"tail","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"symbolKind":"property","modules":[{"name":"AmiiboService"}],"role":"symbol","externalID":"s:13AmiiboService0A0V4tailSSvp","roleHeading":"Instance Property","title":"tail"},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/tail"],"traits":[{"interfaceLanguage":"swift"}]}],"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/tail":{"abstract":[{"text":"The last 8 hexadecimal characters of the amiibo identifier.","type":"text"}],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"tail"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"tail","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/tail","type":"topic","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/tail"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"}}}
|
||||
@@ -1 +1 @@
|
||||
{"abstract":[{"type":"text","text":"An amiibo type."}],"metadata":{"role":"symbol","modules":[{"name":"AmiiboService"}],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"externalID":"s:13AmiiboService0A0V4typeSSvp","symbolKind":"property","roleHeading":"Instance Property","title":"type"},"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:SS","text":"String"}]}]}],"kind":"symbol","sections":[],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/type"},"schemaVersion":{"patch":0,"major":0,"minor":3},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/type":{"type":"topic","title":"type","abstract":[{"type":"text","text":"An amiibo type."}],"role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/type","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/type","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"type","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}]}}}
|
||||
{"schemaVersion":{"patch":0,"minor":3,"major":0},"abstract":[{"type":"text","text":"The type of this amiibo (e.g., Figure, Card, Yarn, Band)."}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/type"]}],"metadata":{"roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"type","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"title":"type","modules":[{"name":"AmiiboService"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V4typeSSvp"},"kind":"symbol","sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/type"},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/type":{"role":"symbol","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/type","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"type","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"title":"type","url":"\/documentation\/amiiboservice\/amiibo\/type","type":"topic","abstract":[{"text":"The type of this amiibo (e.g., Figure, Card, Yarn, Band).","type":"text"}]}}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"schemaVersion":{"minor":3,"patch":0,"major":0},"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\/equatable-implementations"]}],"sections":[],"metadata":{"roleHeading":"API Collection","modules":[{"name":"AmiiboService"}],"role":"collectionGroup","title":"Equatable Implementations"},"kind":"article","topicSections":[{"identifiers":["doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/!=(_:_:)"],"anchor":"Operators","title":"Operators","generated":true}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/Equatable-Implementations"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/!=(_:_:)":{"type":"topic","abstract":[{"type":"text","text":"Returns a Boolean value indicating whether two values are not equal."}],"url":"\/documentation\/amiiboservice\/amiibo\/usage\/!=(_:_:)","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/!=(_:_:)","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":"Self","kind":"typeIdentifier"},{"text":", ","kind":"text"},{"text":"Self","kind":"typeIdentifier"},{"text":") -> ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"role":"symbol","title":"!=(_:_:)"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Usage"}],"title":"Amiibo.Usage","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"Usage"}],"abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}
|
||||
@@ -1 +1 @@
|
||||
{"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"abstract":[{"text":"An explanation of how to use an amiibo item.","type":"text"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/usage\/explanation"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/explanation"},"metadata":{"roleHeading":"Instance Property","symbolKind":"property","title":"explanation","role":"symbol","modules":[{"name":"AmiiboService"}],"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"explanation"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"}],"externalID":"s:13AmiiboService0A0V5UsageV11explanationSSvp"},"primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"explanation","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"languages":["swift"]}]}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"]]},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/explanation":{"abstract":[{"type":"text","text":"An explanation of how to use an amiibo item."}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"explanation","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"url":"\/documentation\/amiiboservice\/amiibo\/usage\/explanation","title":"explanation","type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/explanation"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","role":"symbol","abstract":[{"text":"A model that represents the usage of an amiibo item within a certain game.","type":"text"}],"navigatorTitle":[{"text":"Usage","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Usage","kind":"identifier"}],"title":"Amiibo.Usage","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","url":"\/documentation\/amiiboservice\/amiibo\/usage"}}}
|
||||
{"metadata":{"modules":[{"name":"AmiiboService"}],"externalID":"s:13AmiiboService0A0V5UsageV11explanationSSvp","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"text":"explanation","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"role":"symbol","title":"explanation","symbolKind":"property","roleHeading":"Instance Property"},"kind":"symbol","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":"explanation","kind":"identifier"},{"kind":"text","text":": "},{"preciseIdentifier":"s:SS","kind":"typeIdentifier","text":"String"}]}]}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/usage\/explanation"],"traits":[{"interfaceLanguage":"swift"}]}],"abstract":[{"text":"A description of how the amiibo is used within the game.","type":"text"}],"schemaVersion":{"patch":0,"major":0,"minor":3},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/explanation"},"sections":[],"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/explanation":{"abstract":[{"type":"text","text":"A description of how the amiibo is used within the game."}],"fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"explanation","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:SS","text":"String","kind":"typeIdentifier"}],"title":"explanation","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage\/explanation","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/explanation"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Usage"}],"title":"Amiibo.Usage","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"Usage"}],"abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}]}}}
|
||||
@@ -1 +1 @@
|
||||
{"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"]]},"sections":[],"abstract":[{"type":"text","text":"A flag that indicates whether an amiibo item can save game data in it."}],"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/usage\/iswriteable"]}],"metadata":{"role":"symbol","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"symbolKind":"property","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"isWriteable","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:Sb","text":"Bool","kind":"typeIdentifier"}],"title":"isWriteable","externalID":"s:13AmiiboService0A0V5UsageV11isWriteableSbvp"},"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/isWriteable"},"kind":"symbol","primaryContentSections":[{"kind":"declarations","declarations":[{"platforms":["macOS"],"languages":["swift"],"tokens":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"isWriteable"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"references":{"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","role":"collection","type":"topic","abstract":[{"type":"text","text":"A library that provides everything the developer needs to interacts with the "},{"type":"strong","inlineContent":[{"type":"text","text":"Amiibo API"}]},{"type":"text","text":" backend service."}],"url":"\/documentation\/amiiboservice","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/isWriteable":{"title":"isWriteable","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/usage\/iswriteable","kind":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/isWriteable","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"isWriteable"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"type":"topic","abstract":[{"type":"text","text":"A flag that indicates whether an amiibo item can save game data in it."}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"kind":"symbol","role":"symbol","abstract":[{"text":"A model that represents the usage of an amiibo item within a certain game.","type":"text"}],"navigatorTitle":[{"text":"Usage","kind":"identifier"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"Usage","kind":"identifier"}],"title":"Amiibo.Usage","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","url":"\/documentation\/amiiboservice\/amiibo\/usage"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo item.","type":"text"}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Amiibo"}],"url":"\/documentation\/amiiboservice\/amiibo","title":"Amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"type":"topic","kind":"symbol","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"}}}
|
||||
{"abstract":[{"text":"A flag that indicates whether the amiibo can save game data.","type":"text"}],"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/usage\/iswriteable"],"traits":[{"interfaceLanguage":"swift"}]}],"kind":"symbol","identifier":{"url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/isWriteable","interfaceLanguage":"swift"},"metadata":{"roleHeading":"Instance Property","fragments":[{"text":"let","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"isWriteable"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"isWriteable","modules":[{"name":"AmiiboService"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V5UsageV11isWriteableSbvp"},"schemaVersion":{"patch":0,"minor":3,"major":0},"sections":[],"primaryContentSections":[{"declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"isWriteable"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"platforms":["macOS"],"languages":["swift"]}],"kind":"declarations"}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage"]]},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage/isWriteable":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage\/isWriteable","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"isWriteable"},{"kind":"text","text":": "},{"kind":"typeIdentifier","preciseIdentifier":"s:Sb","text":"Bool"}],"title":"isWriteable","role":"symbol","url":"\/documentation\/amiiboservice\/amiibo\/usage\/iswriteable","type":"topic","kind":"symbol","abstract":[{"type":"text","text":"A flag that indicates whether the amiibo can save game data."}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo/Usage":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/Usage","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"Usage"}],"title":"Amiibo.Usage","role":"symbol","type":"topic","url":"\/documentation\/amiiboservice\/amiibo\/usage","kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"Usage"}],"abstract":[{"type":"text","text":"A model that represents the usage of an amiibo within a certain game."}]},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"}}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user